FactoyGirl:之前(:创建)动作未被识别
FactoyGirl: before(:create) actions not being recognized
我正在尝试创建我的 FactoryGirl 工厂,这样当我调用 FactoryGirl.create(:model_a)
时,model_a[=32 的任何 dependency =] 被创建并分配给那个 model_a 工厂。但是,由于某种原因,我的方法不起作用,我不太明白为什么。
在我的工厂文件中,这是我拥有的:
FactoryGirl.define do
factory :model_a do
before(:create) do
FactoryGirl.create(:model_b)
end
model_b {ModelB.first}
end
end
现在,当我 运行 FactoryGirl.create(:model_a)
我希望它首先创建工厂 model_b(因为 before(:create) 调用)然后返回创建工厂 model_a 并分配工厂 model_b 到 model_b 关系 model_a
但是,我收到了错误 model_b must exist, model_b cannot be blank
。
为什么没有创建工厂 model_b 以便我可以使用它?
您需要在 before(:create)
块中设置 model_a
和 model_b
之间的关联。例如:
FactoryGirl.define do
factory :model_a do
# add model_a attributes as needed
before(:create) do |model_a|
model_a.model_b = ModelB.first || FactoryGirl.create(:model_b)
end
end
end
或者,根据 OP 的评论:
factory :model_a do
# add model_a attributes as needed
model_b { ModelB.first || FactoryGirl.create(:model_b) }
end
我正在尝试创建我的 FactoryGirl 工厂,这样当我调用 FactoryGirl.create(:model_a)
时,model_a[=32 的任何 dependency =] 被创建并分配给那个 model_a 工厂。但是,由于某种原因,我的方法不起作用,我不太明白为什么。
在我的工厂文件中,这是我拥有的:
FactoryGirl.define do
factory :model_a do
before(:create) do
FactoryGirl.create(:model_b)
end
model_b {ModelB.first}
end
end
现在,当我 运行 FactoryGirl.create(:model_a)
我希望它首先创建工厂 model_b(因为 before(:create) 调用)然后返回创建工厂 model_a 并分配工厂 model_b 到 model_b 关系 model_a
但是,我收到了错误 model_b must exist, model_b cannot be blank
。
为什么没有创建工厂 model_b 以便我可以使用它?
您需要在 before(:create)
块中设置 model_a
和 model_b
之间的关联。例如:
FactoryGirl.define do
factory :model_a do
# add model_a attributes as needed
before(:create) do |model_a|
model_a.model_b = ModelB.first || FactoryGirl.create(:model_b)
end
end
end
或者,根据 OP 的评论:
factory :model_a do
# add model_a attributes as needed
model_b { ModelB.first || FactoryGirl.create(:model_b) }
end