2011-12-07 39 views
15

Gặp nhiều rắc rối khi nhận tất cả vịt theo đúng thứ tự với FactoryGirl.FactoryGirl: Nhà máy chưa đăng ký: người dùng (ArgumentError)

Thiết lập ứng dụng đường ray nhỏ gọn (3.0.11), factory_girl_rails (1.4.0), factory_girl (2.3.2) & dưa chuột-đường ray (1.2.1) và ruby-1.8.7-p352.

Các thử nghiệm dưa chuột là:

Feature: a 
    Scenario: test factory-girl 
    Given the following user exists: 
    | name | email    | 
    | Brandon | [email protected] | 

Kết quả là thế này:

cucumber 
Using the default profile... 
"Adam Advertiser" 
"[email protected]" 
#<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 | [email protected] | 
     **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 

Có vẻ như một vấn đề trình tự tải, có thể. Sẽ đánh giá cao bất kỳ sự trợ giúp nào để có được quyền này. Trân Ross

tính năng/Factories.rb là như sau:

FactoryGirl.define do 
    factory :user do 
     name 'Adam Advertiser' 
     email '[email protected]' 
    end 
end 
pp FactoryGirl.create(:user) 

require 'factory_girl/step_definitions' 

My tính năng/support/env.rb là:

require 'pp' 
require 'cucumber/rails' 

require 'factory_girl_rails' 

My GemFile là:

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 

Trả lời

0

Tôi mới vào FactoryGirl và tôi phải đối mặt với một lỗi tương tự như đã đề cập trong báo lỗi post.The này tôi phải đối mặt là

ArgumentError: 
    Not registered: client 

thiết lập Nhà máy:

/spec/nhà máy .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 - Con trì nhà máy con cho: hướng dẫn

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

Tôi đã chạy spec sử dụng lệnh sau:

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

Nhờ @ Ross.The tập tin Gem thấy nhấp tôi những gì đã mất tích.

Cảm ơn.

0

tôi giải quyết vấn đề này chỉ cần thêm những dòng này trên spec_helper tôi:

require 'factory_girl' 
FactoryGirl.find_definitions 
0

Theo this answer, thêm FactoryGirl.find_definitions sẽ làm việc, nhưng thêm require 'rails_helper' nên loại bỏ nhu cầu rằng nếu bạn đã không làm điều đó.

Các vấn đề liên quan