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 

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

ポスト台本


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

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

Source: https://habr.com/ru/post/J450758/


All Articles