Help us understand the problem. What is going on with this article?

Factory_Botで undefined method 'name' in 'user' factoryが発生する場合

More than 1 year has passed since last update.

RailsでFactory Botを使う時にタイトルのエラーが発生したので、原因と対応のメモです。

バージョン

Ruby 2.5.1
Rails 5.2.2
Factory Bot 5.0.1

エラーメッセージ

具体的には以下のエラーメッセージが出力されました。

/vendor/bundle/ruby/2.5.0/gems/factory_bot-5.0.1/lib/factory_bot
/definition_proxy.rb:97:in `method_missing': 
undefined method 'name' in 'user' factory (NoMethodError)

解決方法

エラー発生時のファクトリ

spec/factories/user.rb
FactoryBot.define do
  factory :user do
    name "Beer Lover"
    email "beerlover@example.com"
    password "beerlover"
  end
end

↓修正版

spec/factories/user.rb
FactoryBot.define do
  factory :user do
    name {"Beer Lover"}
    email {"beerlover@example.com"}
    password {"beerlover"}
  end
end

属性名に設定する値は{}で囲う必要があります。
Factory Botのバージョンが5.0.0からは{}で囲わないとエラーがでるように変更されたみたいですね。

sabinuki
ビールと旅行が好きです。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away