我有这个工厂代码:
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个参数了吗?
答案 0 :(得分:1)
主要原因是initialize_with { new(attributes) }
,因为attributes
这里是哈希。
您将需要手动进行initialize_with { new(user_id, cost_object) }