2009-02-27 49 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導致的問題,因爲當它在那裏引發這個異常。有沒有什麼辦法解決這一問題?或者是工廠女生專爲activerecord對象設計的?由於

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

我敢肯定,工廠的女孩僅僅是ActiveRecord的對象,你就應該能夠小樣和存根一個Twitter用戶::對象,而不是使用一個工廠,如果你使用也許RSPEC (如果我的語法正確):

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

然後將其附加到需要它的對象。

這可能不太對,但這是我要開始的道路。