2012-09-14 5 views
0

레일 3 장착 엔진을 개발하는 동안 나는 FactoryGirl를 사용하려고 시도되었으며, 공장은 사양에서 호출 될 때, 그것은 다음과 같은 오류 반환 :FactoryGirl + RSpec에 + 레일 3 엔진 '정의되지 않은 메서드'

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

모델

푸 :: 바

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

푸 :: 바즈

다른 주제 FactoryGirl + RSpec + Rails 3 'undefined method =' 보면
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 

과 대답을 따라 그것은 여전히 ​​작동하지 않았다.

해결 방법에 대한 아이디어가 있으십니까?

답변

1

내 스펙에 잘못된 연관 이름을 사용하여 FactoryGirl에서 create를 호출하여 문제가 발생했습니다.

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

jimworm이 제공 한 도움말을 통해 사양을 살펴 보았으므로 아래와 같이 호출을 수정했습니다.

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

이 문제가 해결되었습니다.

감사합니다. jimworm에게 도움을 요청하십시오.

0

연관은 factory_girl에 association :factory_name으로 지정됩니다.

+0

'factory : foo_baz, class : Foo :: Baz do association : foo_bar end' 시도했지만 작동하지 않았습니다. 동일한 오류가 발생합니다. – Dowling

+0

당신의 협회는'foo_bar'가 아니라'bar'입니다. 보십시오'association : bar, factory : : foo_bar' – jimworm

+0

나는 그것을 시도하고 똑같은 오류를 받았습니다. FactoryGirl이 엔진의 네임 스페이스에 문제가있는 것 같지만 Rails와 FactoryGirl에 익숙하지 않아 잘못 될 수 있습니다. – Dowling

관련 문제