2012-04-27 7 views
6

を使用する際には、そのようなFactory.createなど、いくつかの構文のメソッドは、いくつかの他、最も顕著なFactoryGirl.createcreate単純に賛成して減価償却されました。FactoryGirlの最新リリースでは、特定のFactoryGirl構文

ただし、特定の構文がコンテキストを考慮して常に適切であるとは限りません。

例を見てみましょう:

FactoryGirl.define do 

    factory :article do 
    after_create {|a| a.comments << create(:comment) } 
    end 

    factory :comment do 
    end 

end 

どこ条のhas_manyのコメント、および条belongs_toのコメント。上記の工場では、a.comments << create(:comment)はエラーComment(#nnn) expected, got FactoryGirl::Declaration::Staticを発行します。その行をa.comments << FactoryGirl.create(:comment)に変更すると、エラーが消えます。

構文が他のどのフォームよりも優先されるべきかは不明です。 FactoryGirl documentation 1として

答えて

5

私は、現行バージョン(3.2.0)のコールバック(after_createなど)では、短縮表記がサポートされていないことを知りました。この情報は、Googleグループを通じてFactoryGirlチームから直接送られました。 /将来のバージョンで追加された場合、この質問を更新します。

+1

あなたは救命救助者です。私は長い文法を使うつもりです。無作為なデバッグよりも、いくつかのキーストロークの方が優れています。 –

+0

私はこれを1年前に尋ねました。それ以来、長い形を使っています。ええ、私は同意する、方法頭の傷が少ない。 – IAmNaN

1

、あなたが作成してビルドするようなメソッドを呼び出している間FactoryGirlモジュールの接頭辞を省略したい場合、あなたはミックスインするFactoryGirl方法このようなRSpecの/テストユニット・モジュールに必要:

# rspec 
RSpec.configure do |config| 
    config.include FactoryGirl::Syntax::Methods 
end 
+0

返信いただきありがとうございます。はい、私はこれを行いました。これは、上記の状況だけで 'create'を使用できるようにします。 – IAmNaN

関連する問題