1

我有一个全新的 Rails 3.2 应用程序,我无法让第一步定义工作。我的黄瓜导轨是(1.3.0),factory_girl_rails(3.1.0)。他们都在测试环境中。根据良好的黄瓜实践,这个应用程序还没有编写模型、生成器或视图。我正在等待测试的推动来推动需要做的事情。

这是第一个功能:

Background: 
   Given a School "Murfree High School" exists

这是步骤定义.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

所以我得到了一个不匹配的错误,因为我想让那个步骤定义成为一个通用步骤,这样我就可以换成学校的任何名称。但我认为工厂的重点是确定一个记录生成,以便我可以在其他定义中重用该工厂,并可能随着字段数量的增长而增长它。通常我的步骤定义是 Given /^a School "([^"]*)" exists$/ do |name| 但是当我有一个工厂准备好生成该测试记录时,没有地方可以放置该参数。如果我删除了特征中高中名称周围的引号,以便该定义与该工厂“绑定”,我从黄瓜得到黄色响应。这引出了一个问题:因为我没有要生成的模型,为什么我没有收到红色错误消息?

在协调 factoryGirl 和黄瓜中的通用步骤定义时,我忽略了什么?

4

1 回答 1

1

FactoryGirl 包含一组步骤定义,其中一个会自动创建一个名为a school exists with a name of "([^"]+)". 有关原始公告,请参见http://robots.thoughtbot.com/post/284805810/gimme-three-steps

PS:我还创建了 FG 步骤定义模块的副本,它做的事情完全相同,只是还根据正在生成的工厂的名称创建实例变量。@school在您的情况下,将创建实例变量。

于 2012-04-27T17:07:47.150 回答