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"))

注意:不要忘记尽可能使用构建而不是创建来加速您的测试:)