获取FactoryGirl和黄瓜谈ArityMismatchError

时间:2012-04-19 19:40:39

标签: ruby-on-rails-3 cucumber factory-bot

我有一个绿地Rails 3.2应用程序,我无法让第一步 - def工作。我的黄瓜栏是(1.3.0),factory_girl_rails(3.1.0)。他们都在测试环境中。根据良好的黄瓜做法,这个应用程序没有编写任何模型,生成器或视图。我正在等待测试的推动,以推动需要做的事情。

这是第一个功能:

Background: 
   Given a School "Murfree High School" exists

这是步骤definition.rb

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

这是我的spec / factories.rb

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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