【问题标题】:Factory Girl Associations with Spork Discrepancy与Spork差异的工厂女孩​​协会
【发布时间】:2011-08-08 05:28:43
【问题描述】:

我正在尝试将 Factory Girl 用于带有 Spork 的 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 上的设置器。为什么会发生这种情况?

这是我正在使用的版本

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

【问题讨论】:

  • 无法帮助您解决您的问题,但是 +1 因为问题标题在上下文中听起来真的很有趣。

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


【解决方案1】:

你的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

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

【讨论】:

  • FactoryGirl.factories.clearFactoryGirl.reload 不是必需的(至少对于最新的 factory_girl)。
【解决方案2】:

真的是任何有关联的测试或任何试图创建 :request 工厂的测试吗?我从来没有用过 spork,但没有它也能工作的事实让我想知道 spork/factory_girl 是否正在为“请求”而战……值得研究。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多