我希望当我在工厂中进行更改时,我会在rails控制台中看到它们而不重新启动所有控制台。
我找到了一些线条,并对所发生的事情了解不多,documentation对我来说并不清楚。
FactoryGirl.reload
我也测试过:
> 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
答案 0 :(得分:16)
您也可以使用reload!
重新加载控制台环境,但不会重新加载工厂。使用FactoryGirl.reload
重新加载Factory定义。它(重新)从以下位置加载这些定义(参见documentation):
test/factories.rb
spec/factories.rb
test/factories/*.rb
spec/factories/*.rb
您提到的其他命令用于清除和加载定义。 FactoryGirl.factories.clear
清除所有已加载的Factory定义,而FactoryGirl.find_definitions
重新加载文件中的所有定义。
如果您的on Rails,请务必使用factory_girl_rails
gem。例如,当您定义factory :user
时,可以在控制台中使用FactoryGirl.build(:user)
或FactoryGirl.create(:user)
。这将返回用户实例。
如果不起作用,请发布更多详情。
答案 1 :(得分:8)
我正在使用Faker。查看解决问题的变化差异:
# 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 }
然后FactoryGirl.reload
有效。