Vraag Herlaad fabriek factory_girl


Ik wil dat wanneer ik wijzigingen aanbreng in fabrieken, ik ze zie in de railsconsole zonder alle console opnieuw te starten.

Ik heb enkele regels gevonden en getest met een slecht begrip van wat er aan de hand is, documentatie is niet duidelijk voor mij:

FactoryGirl.reload

Ik heb ook getest:

> FactoryGirl.factories.clear
> FactoryGirl.find_definitions # also tested FactoryGirl.factories.find_definitions
                               # but NoMethodError is raised
=> ActiveRecord::RecordNotFound: Couldn't find Address with ID=277 Torphy Squares

12
2017-09-06 19:31


oorsprong


antwoorden:


Je kan ook gebruiken reload! om de console-omgeving opnieuw te laden, maar het laadt de fabrieken niet opnieuw. Gebruik FactoryGirl.reload om de fabrieksdefinities opnieuw te laden. Het (her) laadt die definities van de volgende locaties (zie de documentatie):

test/factories.rb
spec/factories.rb
test/factories/*.rb
spec/factories/*.rb

De andere opdrachten die u noemt, worden gebruikt om de definities te wissen en te laden. FactoryGirl.factories.clear wist alle geladen fabrieksdefinities, terwijl FactoryGirl.find_definitions laadt alle definities van het bestand opnieuw.

Zorg ervoor dat u de factory_girl_rails edelsteen als je op Rails. Wanneer u bijvoorbeeld een hebt gedefinieerd factory :user, je kunt het gebruiken in je console met FactoryGirl.build(:user) of FactoryGirl.create(:user). Hiermee wordt een gebruikersinstantie geretourneerd.

Als dat niet werkt, plaats dan wat meer details.


15
2017-09-06 20:20



Ik was aan het gebruiken oplichter. Bekijk de diff van wijzigingen die het probleem hebben opgelost:

# factories/building.rb, address is a string

- address    Faker::Address.street_address
+ address    { Faker::Address.street_address }

# factories/user.rb, email is a string

- email Faker::Internet.email
+ email { Faker::Internet.email }

En dan FactoryGirl.reload werken.


8
2017-09-11 16:45