2010-11-29 27 views
7

tôi sẽ sử dụng RSpec với Factory girl trong Dự án Rails3 của tôi. Tôi đã cài đặt nhà máy cô gái nhưng nó không tìm thấy factorys tôi có lỗi nàyRSpec không thể tìm thấy Nhà máy từ Factorygirl

Failure/Error: Factory.build(:user).should_be valid 
No such factory: user 

đặc tả/nhà máy/user_factory.rb:

Factory.define :user do |u| 
    u.username 'otto' 
end 

đặc tả/spec_helper.rb

ENV["RAILS_ENV"] ||= 'test' 
require File.expand_path("../../config/environment", __FILE__) 
require 'rspec/rails' 
require 'factory_girl' 

Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f} 

RSpec.configure do |config| 
    config.mock_with :rspec 
    config.fixture_path = "#{::Rails.root}/spec/fixtures" 
    config.use_transactional_fixtures = true 
end 

Gemfile:

group :development, :test do 
    gem 'webrat' 
    gem "cucumber-rails" 
    gem "rspec-rails" 
    gem "rspec" 
    gem "autotest" 
    gem 'factory_girl' 
end 

Cảm ơn

+2

Vấn đề là với factory_girl. Khi tôi sử dụng factory_girl_rails tất cả mọi thứ làm việc tốt. – ThreeFingerMark

Trả lời

10

Bạn có những dòng sau trong config\application.rb của bạn:

# Configure generators values. 
config.generators do |g| 
    g.test_framework :rspec, :fixture => true 
    g.fixture_replacement :factory_girl, :dir=>"spec/factories" 
end 
+0

Cảm ơn sự giúp đỡ của bạn. Tôi đã thêm điều này trong config \ application.rb nhưng tôi có lỗi tương tự. – ThreeFingerMark

5

Thêm 'factory_girl_rails" viên ngọc để Gemfile của bạn dưới của bạn: kiểm tra,: nhóm phát triển, như sau:

group :development, :test do 
    gem 'webrat' 
    gem "cucumber-rails" 
    gem "rspec-rails" 
    gem "rspec" 
    gem "autotest" 
    gem 'factory_girl' 
    gem 'factory_girl_rails' 
end 

Trong Rails 3, bạn cần phải thêm đá quý đó để làm cho nó hoạt động. Hy vọng nó giúp.

+2

... và thực tế bạn có thể tự xóa bỏ dòng factory_girl nếu muốn. Đó là sự phụ thuộc của factory_girl_rails, do đó sẽ được bao gồm tự động. –

+0

Paul đúng. Bạn không cần dòng đó – GreenPlastik

2

có bạn đã cố gắng thêm một cái gì đó giống như

Dir[Rails.root.join("spec/factories/**/*.rb")].each {|f| require f} 

trong spec_helper? đã làm điều đó cho tôi

+0

điều này đã sửa nó cho tôi - giải pháp khác không khắc phục được nó – Markus

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