LoginSignup
0
1

More than 3 years have passed since last update.

FactoryBotの[KeyError:Factory not registered: "user"]エラーが発生する一例

Last updated at Posted at 2020-11-06

半分未解決ですが、ポートフォリオを作っていてこんなやらかしをした・・・という話です。
モデルの単体テストコード実行時にタイトルのエラーが出てしまったわけですが、検索しても同様の事例がなかったので書いてみました。
簡潔に、結論と応急措置に関してのみ記載します。

結論:アソシエーションに問題があった(と思われる)

インスタンスはFactoryBotを使用してまとめていましたが、下記の記述があることでエラーが発生していました。
応急措置として、削除したところエラーは消えました。

spec/factories/contents.rb
association :user

FactoryBotのassciationですね。usersテーブルのデータを引っ張りたいために記述していました。
これ自体は別におかしなものではないですが、別のコードの記述に問題があって、これが機能していないということだと思います。
その原因は調査中ですが、これができないとテストができないわけではないため、それは別稿にしたいと思います。

同じエラーが出てしまった時、上記を疑ってみるといいかもしれません。

追記

アソシエーションが上手くいかない原因が分かりました。
結論からいうと、spec/factories/user.rbのインスタンスが空っぽだったからです。

spec/factories/user.rb
FactoryBot.define do
  factory :user do

  end
end

何故かもう記述していたとばかり思い込んでいました。
上手くいかないのも当たり前ですね。。。
というわけで、アソシエーション先がそもそもちゃんと書けているかを疑うべきでした。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1