可以与Factory Girl建立联系

时间:2015-03-05 07:05:47

标签: ruby-on-rails ruby rspec

我有这些模特:

class Company < ActiveRecord::Base
  has_many :terminal_values
end

class TerminalValue < ActiveRecord::Base
  belongs_to :company
end

这是spec/factories.rb

FactoryGirl.define do
  factory :company do
    sequence(:code){|n| n + 1000 }
  end

  factory :terminal_value do
    company
  end
end

为了测试has_many关系,我写了这个测试:

  it do
    company = create(:company)
    create(:terminal_value, company: company)
    expect(company.terminal_values.first).to_not eq(nil)
  end

但测试失败了。我做错了什么?

1 个答案:

答案 0 :(得分:0)

即使在您的示例中,您为终端对象提供公司,但在声明工厂时您必须提供完整的定义,您可以尝试这样做:

工厂:公司做     序列(:代码){| N | n + 1000}   端

factory:terminal_value do     公司{build(:company)}   端

同时发布运行测试时遇到的错误。