FactoryBotを利用してテストデータを管理していて、開発が進んでいくとデフォルトで作成したときにエラーになるようなFactoryが作られてしまったりします。
そんなときにFactoryBot.lint
を使うとFactoryが壊れたときに気づけて便利だったのでメモしておきます📝
やり方は簡単で以下のようなテストを追加するだけです。
require 'rails_helper' RSpec.describe FactoryBot, type: :model do describe '.lint' do it 'すべてのFactoryが正常に機能すること' do FactoryBot.lint traits: true end end end
上記設定だとdefault及びtraitを付与した状態でFactoryをcreateしたときにエラーが発生しないかチェックしてくれます。 ※実態はpublic_sendでstrategy(create or build)を実行してエラー発生有無を監視しているようですね👀
エラーが発生した場合には以下のような形でエラーになります。
1) FactoryBot.lint すべてのFactoryが正常に機能すること Failure/Error: FactoryBot.lint traits: true FactoryBot::InvalidFactoryError: The following factories are invalid:
以下のFacotyBotのREADMEに詳しい使い方が書いてあるので気になる人は見てみてください📕