factory_trace gemは、工場の清掃に役立ちます

プロジェクトのテストを作成し、 factory_botを使用してテストデータを生成する場合、 factory_trace gemを提示します。これは、工場と特性を最新の状態に保つのに役立ちます。



何してるの?



テストの起動中、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
      
      





そして、すべての情報を収集した後、単純なアルゴリズムを使用して未使用の工場を見つけます。



ポスト台本



自分で試して、あなたのフィードバックを共有してください、私は感謝します!



ご清聴ありがとうございました。



All Articles