2012-09-14 60 views
0

我一直在嘗試使用FactoryGirl同時制定了Rails 3中安裝的發動機,並在出廠時是所謂的規範,它返回以下錯誤:FactoryGirl + RSpec的+ Rails 3的引擎「未定義的方法」

NoMethodError: undefined method `foo_bar=' for #<Foo::Baz:0x007fed6e3e2700> 

模式

美孚::酒吧

module Foo 
    class Bar < ActiveRecord::Base 
    has_many :bazs 
    end 
end 

富::巴茲

module Foo 
    class Baz < ActiveRecord::Base 
    belongs_to :bar 
    end 
end 

工廠

FactoryGirl.define do 
    factory :foo_bar, class: Foo::Bar do 
    ... 
    end 

    factory :foo_baz, class: Foo::Baz do 
    foo_bar 
    end 
end 

綜觀其他主題FactoryGirl + RSpec + Rails 3 'undefined method ='和遵循的答案,它仍然沒有奏效。

關於如何解決這個問題的任何想法?

回答

1

該問題是由FactoryGirl使用我的規範中錯誤的關聯名稱創建的調用引起的。

FactoryGirl.create(:foo_baz, foo_bar: @bar, created_at: 1.day.ago) 

隨着jimworm提供的幫助,就指着我看規範,所以我修改如下所示的電話。

FactoryGirl.create(:foo_baz, bar: @bar, created_at: 1.day.ago) 

這解決了這個問題。

謝謝你,謝謝你的幫助。

0

一個關聯在factory_girl中指定爲association :factory_name

+0

嘗試過'工廠:foo_baz,class:Foo :: Baz do association:foo_bar end',它沒有工作。它給出了同樣的錯誤。 – Dowling

+0

你的關聯不叫'foo_bar',而是'bar'。嘗試'協會:酒吧,工廠:: foo_bar' – jimworm

+0

我試過,並收到完全相同的錯誤。在我看來,FactoryGirl對引擎的命名空間有問題,但對Rails和FactoryGirl來說是新手,我可能是錯的。 – Dowling

相關問題