initialize_with factory_girl 的参数数量错误
wrong number of arguments for initialize_with factory_girl
我有这个工厂代码:
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:
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)
on initialize
。为什么这会在我传递参数时显示此错误消息?为什么不是 0 而是 1?我传递的所有内容是否都被分组到 1 个参数?
主要是因为initialize_with { new(attributes) }
因为attributes
这里是一个散列
您需要手动制作 initialize_with { new(user_id, cost_object) }
我有这个工厂代码:
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:
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)
on initialize
。为什么这会在我传递参数时显示此错误消息?为什么不是 0 而是 1?我传递的所有内容是否都被分组到 1 个参数?
主要是因为initialize_with { new(attributes) }
因为attributes
这里是一个散列
您需要手动制作 initialize_with { new(user_id, cost_object) }