2013-10-25 2 views
0

레일 정의 :테스트 factoryGirl의 공장 내 factoryGirl 공장 테스트하기 위해 노력하고있어

#spec/factories/post.rb 
FactoryGirl.define do 
factory :post do |p| 
    p.title "Title" 
    p.body "Body" 
end 
end 

FactoryGirl.factories.map(&:name).each do |factory_name| 
describe "The #{factory_name} factory" do 
    it 'is valid' do 
    build(factory_name).should be_valid 
    end 
end 
end 

따라

this에를하지만 난이 오류가 :

in `block in <top (required)>': uninitialized constant Factory (NameError) 
+0

난 그냥 내 모델 사양 파일 중 하나의 RSpec에 코드를 시도 필요 'spec_helper'라인을 포함하는 기억하고 그것을 잘 작동했다. 그것은 당신을 위해 일하는가 ?? 이 방법은 DRY가 아니지만 문제를 진단하는 데 도움이 될 수 있습니다. –

답변

1

어쩌면 이것을 시도를 :

/spec에서 factories_spec.rb라는 파일을 다음과 같이 작성하십시오 :

require 'spec_helper' 

FactoryGirl.factories.map(&:name).each do |factory_name| 
    describe "The #{factory_name} factory" do 
    it 'is valid' do 
     build(factory_name).should be_valid 
    end 
    end 
end 

+0

좋아, 그것은 나를 위해 작동합니다. 질문 : factories_spec.rb 파일에서 모든 factoryGirl.define을 구성하는 것이 더 좋거나 모든 FactoryGirl.define에 대해 별도의 파일을 만드는 것이 더 좋습니다. – user1066183

+0

개인적으로 파일을 개별적으로 분리하지만, '레일스 모델 modelName'등을 만들 때 개별 파일이 생성되기 때문에 플로우와 함께 진행됩니다. 그러나이 코드 조각은 아주 멋지고 건조하기 때문에 모든 공장을 커버 할 수있는 특별한 파일을 한 곳에서 가지고있는 것이 합리적입니다. 다른 사람들의 의견을 듣는 것이 재미있을 것입니다 :) –