Ruby on rails 3 工厂(女孩)(rails& ;;黄瓜:未定义

Ruby on rails 3 工厂(女孩)(rails& ;;黄瓜:未定义,ruby-on-rails-3,cucumber,factory-bot,Ruby On Rails 3,Cucumber,Factory Bot,在工作中遇到问题。似乎这对其他人来说是个问题,我想我已经听从了所有的建议 我已经建立了一个精简的rails 3.0.14应用程序,只包括cucumber rails和factory\u girl\u rails,但仍然没有成功。我想我是在做傻事 运行以下cuc测试将产生以下结果: Scenario: test factory-girl # features/users.feature:3 Given the following user exists: # features/u

在工作中遇到问题。似乎这对其他人来说是个问题,我想我已经听从了所有的建议

我已经建立了一个精简的rails 3.0.14应用程序,只包括cucumber rails和factory\u girl\u rails,但仍然没有成功。我想我是在做傻事

运行以下cuc测试将产生以下结果:

Scenario: test factory-girl        # features/users.feature:3
  Given the following user exists: # features/users.feature:4
    | name    | email               |
    | Brandon | brandon@example.com |
    Undefined step: "the following user exists:" (Cucumber::Undefined)
用户工厂已经创建,我确信,其中有一点“pp”输出。 如果您能帮我整理一下,我将不胜感激

罗斯

设置

env.rb:代码段

功能/支持/工厂.rb:

Cucumber功能/user.feature:


这里的问题是,在要求“factory\u girl/step\u定义”之前,您必须获得所需的工厂,因为step\u定义中有元编程,需要了解您的工厂。您可以显式地要求env.rb中的factories.rb,但最终会产生重复的定义错误,因为cucumber将重新要求factories.rb


您需要从env.rb中删除步骤_定义的要求-这将使其过早发生-并将其放在factories.rb的底部,或者创建一个首先需要工厂的包装器(它需要驻留在cucumber不自动需要的地方)然后是步骤定义。

这里的问题是,在要求“factory\u girl/step\u definitions”之前,您必须获得所需的工厂,因为步骤定义中有元编程,需要了解您的工厂。您可以显式地要求env.rb中的factories.rb,但最终会产生重复的定义错误,因为cucumber将重新要求factories.rb


您需要从env.rb中删除步骤_定义的要求-这将使其过早发生-并将其放在factories.rb的底部,或者创建一个首先需要工厂的包装器(它需要驻留在cucumber不自动需要的地方)然后是步骤定义。

谢谢您的快速回复。env.rb现在看起来是这样的:
require'pp'require'cumber/rails'require'factory\u girl\u rails'和factories.rb看起来是这样的
FactoryGirl.define do factory:user do name'Adam Advertiser'email'a@b.com'结束pp FactoryGirl.create(:user)要求“工厂女孩/步骤定义”,希望这就是您的建议。你提到的替代方案比我目前的水平略高。无论如何,这些步骤现在已被识别,但并不完全正确,因为我得到了一个“工厂未注册:用户(ArgumentError)”。如有任何建议,将不胜感激`对不起,我不得不再做一次——谢谢你的快速回复。env.rb现在看起来是这样的:
require'pp'require'cumber/rails'require'factory\u girl\u rails'
和factories.rb看起来是这样的:
FactoryGirl.define do factory:user do name'Adam Advertiser'email'a@b.com'结束pp FactoryGirl.create(:user)需要“工厂女孩/步骤定义”
,希望这就是您的建议。Factory\u girl步骤现在可以识别,但并不完全正确,因为我得到了一个“Factory not registered:user(ArgumentError)”。如有任何建议,将不胜感激`我无法重现这个错误,所以我可能帮不了什么忙。下面是我用我的测试应用程序的裸体版本创建的要点:<>这应该是使它工作所需的全部。若那个确切的文件结构不适合你们,我们必须在环境上有所不同?请让我知道什么版本的红宝石和什么版本的各种宝石你正在使用。(save!方法的原因是为了避免对持久性做一些事情,使其成为一个简单的测试用例。)谢谢。我所能看到的唯一区别是用户模型的显式加载。唉,这起了作用。我补充了要点[git://gist.github.com/1440592.git]. Ruby版本是Ruby 1.8.7(2011-06-30 patchlevel 352)[x86_64-linux]。系统是:Linux cb-2 3.0.0-13-generic#22 Ubuntu SMP Wed Nov 2 13:27:26 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux我真的希望这能有所帮助。感谢您的快速回复。env.rb现在看起来是这样的:
require'pp'require'cumber/rails'require'factory\u girl\u rails'和factories.rb看起来是这样的
FactoryGirl.define do factory:user do name'Adam Advertiser'email'a@b.com'结束pp FactoryGirl.create(:user)要求“工厂女孩/步骤定义”,希望这就是您的建议。你提到的替代方案比我目前的水平略高。无论如何,这些步骤现在已被识别,但并不完全正确,因为我得到了一个“工厂未注册:用户(ArgumentError)”。如有任何建议,将不胜感激`对不起,我不得不再做一次——谢谢你的快速回复。env.rb现在看起来是这样的:
require'pp'require'cumber/rails'require'factory\u girl\u rails'
和factories.rb看起来是这样的:
FactoryGirl.define do factory:user do name'Adam Advertiser'email'a@b.com'结束pp FactoryGirl.create(:user)需要“工厂女孩/步骤定义”
,希望这就是您的建议。Factory\u girl步骤现在可以识别,但并不完全正确,因为我得到了一个“Factory not registered:user(ArgumentError)”。如有任何建议,将不胜感激`我无法重现这个错误,所以我可能帮不了什么忙。下面是我用我的测试应用程序的裸体版本创建的要点:<>这应该是使它工作所需的全部。若那个确切的文件结构不适合你们,我们必须在环境上有所不同?请让我知道什么版本的红宝石和什么版本的各种宝石你正在使用。(save!方法的原因是为了避免对持久性做一些事情,使其成为一个简单的测试用例。)谢谢。我所能看到的唯一区别是用户模型的显式加载。唉,这让我很不舒服
require 'pp'
require 'cucumber/rails'

require 'factory_girl_rails'
require 'factory_girl/step_definitions'
FactoryGirl.define do
  factory :user do
    name 'Adam Advertiser'
    email 'a@b.com'still
  end   
end
pp FactoryGirl.create(:user)
Feature: a
  Scenario: test factory-girl
    Given the following user exists:
    | name    | email               |
    | Brandon | brandon@example.com |