FactoryBot で Trait を定義したら NoMethodError: が出る場合

結論

引数を指定する際に {}(波括弧、ブレイス)を使いましょう。

具体例

ダメな例

FactoryBot.define do
  factory :user do
    trait :ikemen do
      name '太郎'
    end
  end
end

OKな例

FactoryBot.define do
  factory :user do
    trait :ikemen do
      name { '太郎' }
    end
  end
end

補足

トレイトだけではなくフィクスチャを含め、FactoryBot に名前が変わったときに変更された点ですね。昔*1の個人ブログやQiitaの記事の内容をそのまま用いると、このエラーにハマります。

このエラーにハマる人を数え切れないくらい見てきましたので、書いておきました。

*1:といってもそんなに前ではないですが

Powered by はてなブログ