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.reloadFactory 定義を再ロードするために使用します。これらの定義を次の場所から (再) ロードします (ドキュメントを参照)。

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

あなたが言及した他のコマンドは、定義をクリアしてロードするために使用されます。FactoryGirl.factories.clearロードされたすべての Factory 定義をクリアしFactoryGirl.find_definitions、ファイルからすべての定義をリロードします。

Rails を使用している場合は、必ずfactory_girl_railsgem を使用してください。たとえば を定義した場合factory :user、コンソールでFactoryGirl.build(:user)またはを使用して使用できますFactoryGirl.create(:user)。これは 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 に答える