2009-02-27 12 views
2

私はテスト中に工場の女の子を使用して治具を交換し始めました。私はtwitterクライアントで作業しています。私は工場の女の子を使ってテスト用のtwitterオブジェクトを作成しようとしています。私はそれらを個別に作成すると問題ありません。しかし、それらを関連づけようとすると、私は以下のエラーを受け取ります。工場の女の子の非アクティブなアソシエーションの問題

Factory.define :status, :class => Twitter::Status, :default_strategy => :build do |t| 
    t.text 'Test Twitter Status message' 
    t.association :user, :factory => :twitter_user #this line causes the problems 
end 

Factory.define :twitter_user, :class => Twitter::User, :default_strategy => :stub do |u| 
    u.profile_image_url "#{RAILS_ROOT}/public/images/rails.png" 
end 

それがあるときに、この例外がスローされるのでt.association :user, :factory => :twitter_userが問題を引き起こします。とにかくこれを修正するには?あるいは、アクティブレコードオブジェクト用に設計された工場の女の子ですか?おかげ

NoMethodError: undefined method `save!' for #<Twitter::User:0x4af3de46> 
    /usr/local/share/jruby-1.1.6/lib/ruby/gems/1.8/gems/thoughtbot-factory_girl-1.2.0/lib/factory_girl/proxy/create.rb:5:in `result' 
/usr/local/share/jruby-1.1.6/lib/ruby/gems/1.8/gems/thoughtbot-factory_girl-1.2.0/lib/factory_girl/factory.rb:293:in `run' 
/usr/local/share/jruby-1.1.6/lib/ruby/gems/1.8/gems/thoughtbot-factory_girl-1.2.0/lib/factory_girl/factory.rb:237:in `create' 
/usr/local/share/jruby-1.1.6/lib/ruby/gems/1.8/gems/thoughtbot-factory_girl-1.2.0/lib/factory_girl/proxy/build.rb:17:in `associate' 
/usr/local/share/jruby-1.1.6/lib/ruby/gems/1.8/gems/thoughtbot-factory_girl-1.2.0/lib/factory_girl/attribute/association.rb:13:in `add_to' 
/usr/local/share/jruby-1.1.6/lib/ruby/gems/1.8/gems/thoughtbot-factory_girl-1.2.0/lib/factory_girl/factory.rb:290:in `run' 
/usr/local/share/jruby-1.1.6/lib/ruby/gems/1.8/gems/thoughtbot-factory_girl-1.2.0/lib/factory_girl/factory.rb:288:in `each' 
/usr/local/share/jruby-1.1.6/lib/ruby/gems/1.8/gems/thoughtbot-factory_girl-1.2.0/lib/factory_girl/factory.rb:288:in `run' 
/usr/local/share/jruby-1.1.6/lib/ruby/gems/1.8/gems/thoughtbot-factory_girl-1.2.0/lib/factory_girl/factory.rb:217:in `build' 
test/functional/tweet_feeds_controller_test.rb:12:in `test_Display_friends_timeline_for_the_'amber'_user' 
/usr/local/share/jruby-1.1.6/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/testing/setup_and_teardown.rb:94:in `run_with_callbacks_and_mocha' 

答えて

1

私はあなたがちょうどあなたがRSpecのを多分使用していた場合は、工場出荷時のモックアップとスタブのTwitter :: Userオブジェクトをではなく、使用することができるはず、工場出荷時の女の子はちょうどActiveRecordのオブジェクトのためのものであることをかなり確信しています(私の構文が正しい場合):

@twitter_user = mock(Twitter::User, :profile_image =>"#{RAILS_ROOT}/public/images/rails.png") 

それを必要なオブジェクトに添付します。

これは正しくないかもしれませんが、私が始める道です。

関連する問題