2012-04-19 4 views
1

나는 첫 번째 단계 - def가 작동하지 않을 수있는 초록색 레일 3.2 애플 리케이션을 가지고있어. 내 오이 레일은 (1.3.0), factory_girl_rails (3.1.0)입니다. 둘 다 테스트 환경에 있습니다. 좋은 오이 관행에 따라,이 응용 프로그램은 모델, 발전기 또는 아직 작성된 의견이 없습니다. 테스트에서부터 수행해야 할 작업을 유도하기위한 뉘앙스를 기다리고 있습니다. 여기 FactoryGirl 및 오이 이야기 ArityMismatchError을

첫 번째 기능입니다 : 여기
Background: 
    Given a School "Murfree High School" exists 

이 단계 definition.rb 여기

Given /^a School "([^"]*)" exists$/ do 
    #Factory(:school) #fails 
    school = FactoryGirl.create(:school) 
end 

것은 내 사양/factories.rb

require 'factory_girl' 
FactoryGirl.define do 
    factory :school do 
    name "Murfree High School" 
    end 
end 

그래서 내가 얻을 불일치입니다 오류가 나는 그 단계 정의를 일반적인 단계로 만들고 싶어서 학교의 이름으로 바꿀 수 있기 때문입니다. 그러나 내가 생각한 공장의 포인트는 레코드 생성을 줄여서 다른 정의에서 해당 팩토리를 재사용 할 수 있으며, 필드 수가 늘어남에 따라 성장시킬 수 있다고 생각했습니다. 일반적으로 내 스텝 def가 주어질 것입니다. [^ "] *)"$/do | name |이 존재 합니다만, 그 테스트 레코드를 생성 할 준비가 된 공장을 가질 때 그 인자를 어디에 둘 것인지는 없습니다. 이 정의가 해당 공장에 "묶여"있도록 고등학생의 이름을 따서 따옴표를 제거하면 나는 오이에게서 노란 반응을 얻습니다. 다음 질문에 답합니다. 생성 할 모델이 없으므로 왜 나는 빨간색 오류 MSG을받지 못하는 이유는 무엇입니까?

내가 factoryGirl와 오이에서 일반 단계 정의를 화해에 내려다 보이는하고 무엇?

답변

1

factoryGirl가 자동으로 생성됩니다 하나의 단계를 정의 세트를 포함 a school exists with a name of "([^"]+)"라고하는 단계가 있습니다. 원래 발표문은 http://robots.thoughtbot.com/post/284805810/gimme-three-steps을 참조하십시오.

추신 : 정확히 동일한 일을 수행하는 FG 단계 정의 모듈 도 생성했으며, 생성되는 팩토리의 이름을 기반으로 인스턴스 변수도 생성합니다. 귀하의 경우 인스턴스 변수 @school이 생성됩니다.

+0

당신의 구체적인 질문에 답하기 위해서는 다음과 같이하면됩니다 :'Given/^ a School "([^"] *) "은 $/do | arg1 |; school = FactoryGirl.create (: school, : name) => arg1); –