factory_trace gem membantu membersihkan pabrik Anda

Jika Anda menulis tes untuk proyek Anda dan menggunakan factory_bot untuk menghasilkan data pengujian, saya berikan kepada Anda permata factory_trace , yang akan membantu Anda menjaga pabrik & sifat Anda tetap mutakhir.

Apa fungsinya?


Selama peluncuran pengujian Anda, permata memantau penggunaan pabrik-pabrik tertentu, dan pada akhir pelaksanaannya menampilkan laporan hasil.

$ 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 

Integrasi Proyek


Untuk RSpec, cukup dengan menginstal permata dan Anda dapat menggunakannya, untuk tester lain, cukup untuk melakukan manipulasi sederhana:

 #      FactoryTrace.start #     FactoryTrace.stop 

Eksekusi paralel / potong


Seringkali, jika pengujian memakan waktu lama, mereka dijalankan dalam proses yang berbeda di bagian-bagian, dan agar data pada pabrik yang tidak digunakan menjadi benar, perlu untuk memproses statistik dari semua tes.

Ini dapat dilakukan sebagai berikut:

 #   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 

Bagaimana cara kerjanya?


Berkat penerapan factory_bot menggunakan ActiveSupports::Notifications mudah untuk menambahkan panggilan balik ketika pabrik digunakan:

 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 

Dan setelah mengumpulkan semua informasi, kami menemukan pabrik yang tidak digunakan dengan algoritma sederhana.

post scriptum


Cobalah sendiri dan bagikan tanggapan Anda, saya akan berterima kasih!

Terima kasih atas perhatian anda

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


All Articles