結論
FactoryBot.define do
factory :user, class: "User" do
profile {
{
name: name,
age: age,
nickname: nickname
}
}
end
transient do
name Michael
age 16
nickname Mike
end
end
こういうfactoryを作ったら、Spec内で
let(:user) {
FactoryBot.create(:user, name: 'Robert', nickname: 'Rob')
}
と呼び出す。
transient
で定義しているから、user
オブジェクトからはname
やage
は見えない。
let(:user) {
FactoryBot.create(:user, profile: {
name: 'Robert',
nickname: 'Rob'
})
}
↑ こう書くとage
の項目が上書きされて無くなってしまうため困っていたがこの手を思いついたのでメモ