Failure/Error: config.include FactoryBot::Syntax::Methodsが出た時の対処方法


今回は記述場所を間違えるという非常に初歩的なミスが原因でしたが、他の方の記事を見ても、どこかしらで記述ミスしていることが多いという印象を受けました。

同じようなエラーで詰まっている方の参考になれば幸いです。

やりたいこと

rspecによるテストの実行。
Failure/Error: config.include FactoryBot::Syntax::MethodsNameError:uninitialized constant FactoryBotの解決。

やったこと

ターミナルでbundle exec rspecを実行すると、下記のエラーが発生した。

エラー内容

ターミナル
An error occurred while loading rails_helper.
Failure/Error: config.include FactoryBot::Syntax::Methods

NameError:
  uninitialized constant FactoryBot
# ./spec/spec_helper.rb:19:in `block in <top (required)>'
# ./spec/spec_helper.rb:18:in `<top (required)>'
# ./spec/rails_helper.rb:4:in `require'
# ./spec/rails_helper.rb:4:in `<top (required)>'

エラーの原因

初歩的すぎるが、config.include FactoryBot::Syntax::Methodsを記述する場所を間違っていた。

具体的には下記が原因で間違えました。

rspecをインストールすると、spec_helper.rbrails_helper.rbが作成される。

config.include FactoryBot::Syntax::Methodsrails_helper.rbファイルのRSpec.configure do |config|の下部に追記する。

RSpec.configure do |config|という記述がspec_helper.rbrails_helper.rbの両方に存在することに気づかず、spec_helper.rbの方に追記してしまった。

解決策

rails_helper.rbRSpec.configure do |config|下に追記する。

rails_helper.rb
RSpec.configure do |config|
  config.include FactoryBot::Syntax::Methods
 (中略)
end

学んだこと

今回のミスはただ記述する場所を間違えたという初歩的すぎるものだが、たったこれだけでエラー解決に時間を取られてしまうため、どこのファイルに記述するか・スペルミスはないかなどケアレスミスに注意して開発を進める

参考