何してるの?
テストの起動中、gemは特定のファクトリーの使用を監視し、実行の最後に結果レポートを表示します。
$ FB_TRACE=1 rspec total number of unique used factories & traits: 3 total number of unique unused factories & traits: 2 unused global trait with_email unused factory admin
プロジェクト統合
RSpecの場合は、gemをインストールするだけで使用できます。他のテスターであれば、簡単な操作を行うだけで十分です。
# FactoryTrace.start # FactoryTrace.stop
並列/ピース実行
多くの場合、テストに時間がかかる場合、テストは部分的に異なるプロセスで実行されます。未使用の工場のデータを正確にするには、すべてのテストの統計を処理する必要があります。
これは次のように実行できます。
# FB_TRACE=trace_only FB_TRACE_FILE=fb_trace_result1.txt bundle exec rspec spec/first_spec.rb # ( ) FB_TRACE=trace_only FB_TRACE_FILE=fb_trace_result2.txt bundle exec rspec spec/second_spec.rb # bundle exec factory_trace fb_trace_result1.txt fb_trace_result2.txt
どのように機能しますか?
ActiveSupports::Notifications
を使用した
ActiveSupports::Notifications
実装のおかげで、ファクトリーの使用時にコールバックを簡単に追加できます。
ActiveSupport::Notifications.subscribe('factory_bot.run_factory') do |_name, _start, _finish, _id, payload| name = payload[:name] traits = payload[:traits] storage[name] ||= Set.new storage[name] |= traits end
そして、すべての情報を収集した後、単純なアルゴリズムを使用して未使用の工場を見つけます。
ポスト台本
自分で試して、あなたのフィードバックを共有してください、私は感謝します!
ご清聴ありがとうございました。