Factory Girl与Spork的关联问题

5

我正在尝试在RSpec和Spork中使用Factory Girl。每当我不使用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
无法回答你的问题,但是点赞支持一下,因为这个问题的标题在没有上下文的情况下听起来真的很有趣。 - user244343
2个回答

6

你的 Spork.each_run 块中是否包含 require 'factory_girl_rails' 语句?

我在我的 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
FactoryGirl.factories.clearFactoryGirl.reload在最新的factory_girl中已经不再必要。 - Juliusz Gonera

0

这是真的有任何测试与关联或任何试图创建:request factory吗?我从未使用过spork,但它可以在没有它的情况下工作,这让我想知道spork/factory_girl是否正在争夺"Request"... 值得探究。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接