相关疑难解决方法(0)

FactoryGirl覆盖关联对象的属性

这可能很简单,但我无法在任何地方找到一个例子.

我有两个工厂:

FactoryGirl.define do
  factory :profile do
    user

    title "director"
    bio "I am very good at things"
    linked_in "http://my.linkedin.profile.com"
    website "www.mysite.com"
    city "London"
  end
end

FactoryGirl.define do 
  factory :user do |u|
    u.first_name {Faker::Name.first_name}
    u.last_name {Faker::Name.last_name}

    company 'National Stock Exchange'
    u.email {Faker::Internet.email}
  end
end
Run Code Online (Sandbox Code Playgroud)

我想要做的是在创建配置文件时覆盖一些用户属性:

p = FactoryGirl.create(:profile, user: {email: "test@test.com"})
Run Code Online (Sandbox Code Playgroud)

或类似的东西,但我不能正确的语法.错误:

ActiveRecord::AssociationTypeMismatch: User(#70239688060520) expected, got Hash(#70239631338900)
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过首先创建用户然后将其与配置文件相关联来实现此目的,但我认为必须有更好的方法.

或者这将工作:

p = FactoryGirl.create(:profile, user: FactoryGirl.create(:user, email: "test@test.com"))
Run Code Online (Sandbox Code Playgroud)

但这似乎过于复杂.是否有更简单的方法来覆盖关联的属性?这是什么语法?

ruby rspec associations factory-bot

25
推荐指数
2
解决办法
2万
查看次数

标签 统计

associations ×1

factory-bot ×1

rspec ×1

ruby ×1