FactoryGirl: фабрика не зарегистрирована: пользователь (ArgumentError) - PullRequest
15 голосов
/ 07 декабря 2011

У нас много проблем с приведением всех уток в правильном порядке с FactoryGirl.

Установите приложение для минималистских рельсов (3.0.11), factory_girl_rails (1.4.0), factory_girl (2.3.2) и огуречные рельсы (1.2.1) и ruby-1.8.7-p352.

Тест на огурец:

Feature: a
  Scenario: test factory-girl
    Given the following user exists:
    | name    | email               |
    | Brandon | brandon@example.com |

Результат таков:

cucumber 
Using the default profile...
"Adam Advertiser"
"a@b.com"
#<User id: nil, name: nil, created_at: nil, updated_at: nil, email: nil>
Feature: a

  Scenario: test factory-girl        # features/users.feature:2
    Given the following user exists: # factory_girl-2.3.2/lib/factory_girl/step_definitions.rb:100
      | name    | email               |
      | Brandon | brandon@example.com |
      **Factory not registered: user (ArgumentError)**
      features/users.feature:3:in `Given the following user exists:'

Failing Scenarios:
cucumber features/users.feature:2 # Scenario: test factory-girl

1 scenario (1 failed)
1 step (1 failed)
0m0.107s

Может показаться проблемой с последовательностью загрузки. Был бы признателен за любую помощь, чтобы получить это право. С уважением Ross

Возможности / Фабрики.rb таким образом:

FactoryGirl.define do
    factory :user do
        name 'Adam Advertiser'
        email 'a@b.com'
    end
end
pp FactoryGirl.create(:user)

require 'factory_girl/step_definitions'

Мои функции / поддержка / env.rb:

require 'pp'
require 'cucumber/rails'

require 'factory_girl_rails'

Мой GemFile:

source 'http://rubygems.org'

gem 'rails', '3.0.11'

gem 'sqlite3'


group :development, :test do

    gem 'cucumber-rails'
    gem 'factory_girl_rails'     # rails 3 version

end

Ответы [ 4 ]

33 голосов
/ 17 декабря 2011

Вызов FactoryGirl.find_definitions сразу после require 'factory_girl_rails' исправил аналогичную проблему для меня.

См. Невозможно запустить factory_girl под рельсами 3.0.5, неожиданно tCONSTANT

0 голосов
/ 29 июня 2015

Согласно этому ответу , добавление FactoryGirl.find_definitions будет работать, но добавление require 'rails_helper' должно устранить необходимость в этом, если вы этого не сделали.

0 голосов
/ 27 ноября 2014

Я решил эту проблему, просто добавив эти строки в мой spec_helper:

require 'factory_girl'
FactoryGirl.find_definitions
0 голосов
/ 09 января 2013

Я новичок в FactoryGirl, и я столкнулся с подобной ошибкой, упомянутой в этом посте. Ошибка, с которой я столкнулся, была

 ArgumentError:
   Not registered: client

Заводская настройка:

/ спецификация / factories.rb

Factory.define :user do |f|
  f.email { Faker::Internet.email }
  f.first_name { Faker::Name.first_name }
  f.last_name { Faker::Name.last_name }
  f.phone { Faker::PhoneNumber.phone_number }
  f.password "foobar"
end

/ spec / factories / users.rb - Содержит дочерние фабрики для: user

Factory.define :client, :parent => :user do |client|
  client.email                    { Factory.next(:client_email) }
  client.password                 "password"
  client.password_confirmation    "password"
end

Я запустил спецификацию, используя следующую команду:

    app_root$ RAILS_ENV=custom_test bundle exec rspec spec/controllers/users_controller_spec.rb 

Благодаря @ Ross. Показанный файл Gem нажал на меня, что пропало.

Спасибо.

...