RSpecのテストコードを書いている際、FactoryBot.defineでモデルをNewする際の初期値を決めて楽できるということでかいてみていた際に Factory not registered
って怒られた際のログ。
書いてたコード。
# spec/factories/categories.rb
FactoryBot.define do
factory :category do
name { "category_name" }
slug { "category_slug" }
end
end
category = Category.new(name: "", slug: "fuga")
をcategory = build(:category, name: "")
にしたイメージ。テスト実行。
# bundle exec rspec spec/models/category_spec.rb
FFF
Failures:
1) Category name blankの時に invalidになる
Failure/Error: category = build(:category, name: "")
KeyError:
Factory not registered: "category"
Factory not registered: "category"
なるエラー。 どうも FactoryBot.define
が動作してない。
まぁまぁハマった。
/spec/factories/以下は自動でロードしてくれるっていうしなんだろなーと。
で調べてる中で↓を見つけた。
spec_helper.rb
でrequire 'factory_girl'
してるのに目が行った。rails_helper.rb
で require 'factory_bot_rails'
してみた。で、テスト実行。
# bundle exec rspec spec/models/category_spec.rb
...
Finished in 0.10593 seconds (files took 3.21 seconds to load)
3 examples, 0 failures
いけたー。
最後までお読みいただき、ありがとうございました。
ご意見などありましたら@hippohackへDMをお願いいたします。