重新加载factory_girl工厂

我希望当我在工厂中进行更改时,我会在rails控制台中看到它们而不重新启动所有控制台。

我找到了一些线条并对它们进行了测试,对所发生的事情了解甚少, 文档对我来说并不清楚:

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 

你也可以使用reload! 重新加载控制台环境,但它不会重新加载工厂。 使用FactoryGirl.reload重新加载Factory定义。 它(重新)从以下位置加载这些定义(请参阅文档 ):

 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) 。 这将返回一个User实例。

如果这不起作用,请发布更多详细信息。

我在使用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工作。