13

我希望当我在工厂中进行更改时,我可以在 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
4

2 回答 2

18

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

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

您提到的其他命令用于清除和加载定义。FactoryGirl.factories.clear清除所有加载的工厂定义,同时FactoryGirl.find_definitions从文件中重新加载所有定义。

factory_girl_rails如果您在 Rails 上,请务必使用gem。例如,当您定义 afactory :user时,您可以在控制台中将其与FactoryGirl.build(:user)or一起使用FactoryGirl.create(:user)。这将返回一个用户实例。

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

于 2012-09-06T20:20:25.937 回答
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工作。

于 2012-09-11T16:45:03.770 回答