initialize_with factory_girl的参数数目错误

时间:2018-07-26 10:20:15

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

我有这个工厂代码:

FactoryGirl.define do
  factory :cost_group, class: CostGroup do
    transient do
      user_id     nil
      cost_object   nil
    end

    initialize_with { new(attributes) }
  end
end

这是我的课程:

class CostGroup
  attr_reader :user_id, :cost_object

  def initialize(user_id, cost_object, data = {})
    ...
  end
end

但是运行规范时出现错误。

let(:u) {build(:user)}
let(:cost) {build(:cost)}
let(:cost_group) { build(:cost_group, user_id: u.id, cost_object: cost) }

结果是:wrong number of arguments (1 for 2..3)上的initialize。为什么在我传递参数时显示此错误消息?为什么不是0而是1?我通过的所有内容都归为1个参数了吗?

1 个答案:

答案 0 :(得分:1)

主要原因是initialize_with { new(attributes) },因为attributes这里是哈希。

您将需要手动进行initialize_with { new(user_id, cost_object) }