FactoryGirl:在关联模型上指定属性
FactoryGirl: specifying attributes on associated model
我有两个简单的工厂:一个用于 user
,一个用于 blog
。创建博客时,必须要关联一个user
,所以在博客工厂中体现为:
FactoryGirl.define do
factory :user do
end
end
FactoryGirl.define do
factory :blog do
user #specifying the required association
end
end
现在我可以像这样在规范中创建博客了:
blog = create(:blog)
我不确定在规范中如何做的是如何在 blog
记录首先被创建。
例如:在创建 blog
记录(同时创建关联的 user
记录)时,我想在关联的 user
上指定 first_name
属性记录。类似于:
blog = create(:blog, associated_user: (first_name: 'foobar) )
上面的语法不起作用,但我想做类似的事情。我确实看过 factory girl docs,我一直在谷歌搜索,但一直无法弄清楚这一点。
问题:在使用factory girl创建对象时,如何在关联对象上设置一些自定义属性?
您可以简单地用需要的对象设置相应的调用参数。
user = create(:user, first_name: "Harald")
blog = create(:blog, user: user)
# or inline if preferred
blog = create(:blog, user: create(:user, first_name: "Heinz"))
注意:不要忘记尽可能使用构建而不是创建来加速您的测试:)
我有两个简单的工厂:一个用于 user
,一个用于 blog
。创建博客时,必须要关联一个user
,所以在博客工厂中体现为:
FactoryGirl.define do
factory :user do
end
end
FactoryGirl.define do
factory :blog do
user #specifying the required association
end
end
现在我可以像这样在规范中创建博客了:
blog = create(:blog)
我不确定在规范中如何做的是如何在 blog
记录首先被创建。
例如:在创建 blog
记录(同时创建关联的 user
记录)时,我想在关联的 user
上指定 first_name
属性记录。类似于:
blog = create(:blog, associated_user: (first_name: 'foobar) )
上面的语法不起作用,但我想做类似的事情。我确实看过 factory girl docs,我一直在谷歌搜索,但一直无法弄清楚这一点。
问题:在使用factory girl创建对象时,如何在关联对象上设置一些自定义属性?
您可以简单地用需要的对象设置相应的调用参数。
user = create(:user, first_name: "Harald")
blog = create(:blog, user: user)
# or inline if preferred
blog = create(:blog, user: create(:user, first_name: "Heinz"))
注意:不要忘记尽可能使用构建而不是创建来加速您的测试:)