RSpec「KeyError: Factory not registered:」エラー解決

プログラミング初学者がRSpecでFactoryBotを使用したテストコードを記述していた際のErrorです。

 

モデルの単体テストを実装していました。その時に、「KeyError: Factory not registered:」というエラーが発生して苦戦したため、解決方法を自分用にメモを残しておこうと思います。

 

Error解決の結論はFactoryBotの記述を格納するディレクトリにモデルに対するFactoryBotのファイルが正しく配置されていなかったのが原因でした。
※テストコードを記述するファイルを生成した後からFactoryBotを導入しています。

初歩的なミスでしたので同じようなミスをされる方はいないかと思います。😅

 

調べた際にいくつか解決策があったので、まとめておきたいと思います。

 

解決策1

〇〇_spec.rb に下記コードを追加で記述

 

spec/〇〇_spec.rb
 
RSpec.configure do |config|
  config.before(:all) do
    FactoryBot.reload
  end
end

 

解決策2

ターミナルで spring stopを実行する。

理由は下記の通りです。

Railsに標準で導入されている『Spring』というGemがバックグラウンドで作動していて、たまにロードエラーを起こしてしまう。その時は、『spring stop』を実行し、Springを一時停止する必要がある」
とのことです。