2011-08-08 39 views
6

我正在嘗試使用RSpec的工廠女孩​​與Spork。每當我運行沒有spork的測試時,所有東西都會通過,但是當我使用Spork運行時,所有嘗試創建依賴於另一個工廠的工廠實例的測試都會失敗。例如:與Spork差異的工廠女孩​​協會

3) Invitation has a correctly formed body 
    Failure/Error: request = FactoryGirl.create(:request, ....) 
    NoMethodError: 
    undefined method `user=' for #<Request:0x007f86b6a87890> 

而且我factories.rb代碼看起來大致是這樣的

FactoryGirl.define do 
    factory :user do 
    sequence(:first_name) { |n| "first_name#{n}" } 
    sequence(:last_name) { |n| "last_name#{n}" } 
    end 

    factory :request do 
    association :user, :factory => :user, :is_walker => false 
    end 
end 

我的代碼只是似乎打破時,有一個關聯,然後它試圖呼籲:user的制定者。爲什麼會發生這種情況?

下面是我使用

gem 'rails', '3.0.7' 
gem 'rspec-rails', '2.6.1' 
gem 'spork', '0.9.0.rc5' 
gem 'factory_girl_rails', '1.0' 
+2

不能幫助你解決你的問題,但是+1,因爲問題標題聽起來很有趣。 – darvids0n

回答

0

版本是否真的有關聯,或者嘗試創建任何測試的任何測試:要求在工廠?我從來沒有使用spork,但事實上,它沒有它的工作,讓我懷疑spork/factory_girl是否爭取「請求」......值得研究。

6

您的Spork.each_run區塊中是否有require 'factory_girl_rails

我用我的Gemfile如下:

gem "factory_girl_rails", :require => false 
在spec_helper.rb

如果
Spork.each_run do 

    require 'factory_girl_rails' 
    FactoryGirl.factories.clear 
    FactoryGirl.reload 

end 

不知道它會幫助,但值得一試。

+1

'FactoryGirl.factories.clear'和'FactoryGirl.reload'不是必需的(至少在最新的factory_girl中)。 –

+0

不錯,工作正常 – mhenrixon