在黄瓜功能中使用工厂女孩步骤定义(Rails 3)



我正在尝试使用Cucumber和Factory Girl。以下行:

  Given I am not logged in
  And   the following user exists:
    | login  | email               | password   | confirmation |
    | user50 | user50@mydomain.com | secret50   | secret 50    | 
 ....

引发以下错误:

Undefined step: "the following user exists:" (Cucumber::Undefined exception)
/home/user/RubymineProjects/project/features/sign_in.feature:9:in `And the following user exists:
You can implement step definitions for undefined steps with these snippets:
And /^the following user exists:$/ do |table|
  # table is a Cucumber::Ast::Table
  pending # express the regexp above with the code you wish you had
end

'

我已经安装了factory_girl_rails(甚至RubyMine的代码完成功能也适用于工厂女孩步骤...

#Gemfile
group :test do
   gem "cucumber-rails", ">= 0.3.2"
   gem "factory_girl_rails"
 end
#features/support/env.rb
require 'factory_girl'
require 'factory_girl/step_definitions'

有什么想法吗?谢谢


更新:多亏了@sj26和@twmills,我意识到我忘记了用工厂女孩创建一个:user工厂。一旦我创建了它,一切都运行良好。

对于那些现在尝试使用FactoryGirl助手的人:

从 FactoryGirl 3.5.0 开始,这些步骤帮助程序在 4.0.0 中被弃用并删除: http://robots.thoughtbot.com/post/25650434584/writing-better-cucumber-scenarios-or-why-were

从 FactoryGirl

3.5.0 开始,使用 FactoryGirl 生成的任何步骤 定义将打印出弃用警告。我们将删除 步骤定义完全在工厂女孩的 4.0.0 版本中 根据森维尔。我想现有的代码将被提取 到类似于黄瓜导轨的训练轮的宝石,带有漂亮的 警告敦促开发人员不要使用这些步骤。

因此,如果您想在Cucumber中使用FactoryGirl,则应在自己的步骤定义中使用它。

您需要首先包括您的工厂。 factory_girl/step_definitions将循环访问您定义的工厂,为每个工厂定义一个步骤。

我在features/support/factory_girl.rb使用它:

# Require factories...
require 'spec/factories'
# Then define steps based on factories.
require 'factory_girl/step_definitions'

在 features/step_definitions/user_steps.rb 中试试这个

Given /^the following user exists:$/ do |users|
  users.hashes.each do |user|
    Factory(:user,user)
  end
end

尽管您可能想要这个:

Given /^the following users:$/ do |users|
  etc..

好的,我知道 ThoughtBot 希望我们编写更好的代码,但作为升级拐杖,我们可以将这个旧文件放在 features/step_definitions:

https://raw.github.com/thoughtbot/factory_girl/3.6.x/lib/factory_girl/step_definitions.rb

相关内容

  • 没有找到相关文章

最新更新