0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Rails]RspecにてKeyError: Factory not registered

Posted at

##はじめに
Rspecにてテストコードを記述していたところKeyError: Factory not registeredというエラーが出ました。
悩んだ割にはさくっと解決できました。一応記事に残しておきます。

##解決法
まず、私の場合、FactoryBotで定義していたのがこちらになります↓

FactoryBot.define do
  factory :progress do
    progress_page       {300}
    comment             {"◯◯と◯◯がよくわからなかったから次回詳しく教えて欲しい" }
    association :students_textbook
  end
end

こちら実際のターミナル上のエラー↓
スクリーンショット 2021-07-13 19.15.59.png

これアソシエーションでstudents_textbookという中間テーブルのモデルと繋がっているのですが、このときspecフォルダの中のmodelsフォルダの中にstudents_textbookモデルは作成していません。

しかしながら実際のテストじゃない方では存在するモデルです。
ただ、これは中間テーブルなので特にテストすることもないと思い、作成していませんでした。

しかしエラー文をみるとどうやらfactorybotの方で定義したアソシエーションがどうやら怪しいと思い、rails g rspec:modelで作成しました。

するとうまいこといきました。

##最後に
おそらくアソシエーションで組んでいるモデルがないぞ!というエラーだったのかと思います。実際では存在しますし、これはテストなので一応associationで記載したモデルが存在しないとおかしいよねっということを知らせてくれているのでは?という結論に行きつきました。

ちなみに、specフォルダの中のstudents_textbookモデルは何も記載していません。

もし私の仮説や考え方が間違っている場合指摘していただけると幸いです。

0
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?