2012-04-19 61 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