与Spork Discrepancy的工厂女孩​​协会

时间:2011-08-08 05:28:44

标签: ruby-on-rails-3 rspec factory-bot spork

我正在尝试使用Spork将Factory Girl用于RSpec。每当我在没有spork的情况下运行测试时,一切都会通过,但是当我使用Spork运行它时,所有试图创建依赖于另一个工厂的工厂实例的测试都会失败。例如:

3) Invitation has a correctly formed body
   Failure/Error: request = FactoryGirl.create(:request, ....)
   NoMethodError:
     undefined method `user=' for #<Request:0x007f86b6a87890>

我的factories.rb代码大致与此类似

FactoryGirl.define do
  factory :user do
    sequence(:first_name) { |n| "first_name#{n}" }
    sequence(:last_name) { |n| "last_name#{n}" }
  end

  factory :request do
    association :user, :factory => :user, :is_walker => false
  end
end

我的代码似乎只有在存在关联时才会中断,然后它会尝试在:user上调用setter。为什么会发生这种情况?

以下是我正在使用的版本

gem 'rails', '3.0.7'
gem 'rspec-rails', '2.6.1'
gem 'spork', '0.9.0.rc5'
gem 'factory_girl_rails', '1.0'

2 个答案:

答案 0 :(得分:6)

您的require 'factory_girl_rails区块中有Spork.each_run吗?

我在我的gemfile中使用了以下内容:

  gem "factory_girl_rails", :require => false

在spec_helper.rb中:

Spork.each_run do

  require 'factory_girl_rails'
  FactoryGirl.factories.clear
  FactoryGirl.reload

end

不确定它是否会有所帮助,但值得一试。

答案 1 :(得分:0)

是否真的有任何测试有关联或尝试创建一个:请求工厂的测试?我从来没有使用过spork,但事实上没有它可以让我想知道spork / factory_girl是否正在争夺“请求”...值得关注。