Edited at

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

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からは{}で囲わないとエラーがでるように変更されたみたいですね。