2012-04-19 41 views
1

我有一個greenfield Rails 3.2應用程序,我無法獲得第一步驟工作。我的黃瓜鐵軌是(1.3.0),factory_girl_rails(3.1.0)。他們都在測試環境中。根據良好的黃瓜實踐,這個應用程序沒有模型,生成器或視圖寫入。我正在等待測試的推動力來推動需要做的事情。Get 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是Given/^ a School「([^」] *)「存在$/do | name |但是當我有一個工廠準備好生成測試記錄時,沒有放置該參數的位置。我刪除了關於高中名稱的引號,以便將該定義與該工廠「綁定」,我從黃瓜那裏得到一個黃色答覆。這引出了一個問題:因爲我沒有生成模型,爲什麼我沒收到一個紅色的錯誤味精?

我在協調factoryGirl和黃瓜的一般步驟定義俯瞰什麼?

回答

1

factoryGirl包括一系列的步驟定義,其中一個會自動創建一個步驟爲a school exists with a name of "([^"]+)",原始公告爲http://robots.thoughtbot.com/post/284805810/gimme-three-steps

PS:我還創建了FG步驟定義模塊的a copy,它完全相同,只根據正在生成的工廠名稱創建實例變量。在你的情況下,將創建實例變量@school

+0

要回答你的具體問題,你可以使用這個:'Given/^ a School「([^」] *)「存在$/do | arg1 |; school = FactoryGirl.create(:school,:name => arg1); end' – 2012-05-11 13:29:28