factory_trace gem ayuda a limpiar tus fábricas

Si escribe pruebas para su proyecto y usa factory_bot para generar datos de prueba, le presento la gema factory_trace , que lo ayudará a mantener sus fábricas y rasgos actualizados.

Que hace


Durante el lanzamiento de sus pruebas, la gema monitorea el uso de ciertas fábricas, y al final de la ejecución muestra un informe de resultados.

$ 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 

Integracion de proyectos


Para RSpec, es suficiente instalar la gema y puede usarla, para cualquier otro probador, es suficiente para hacer manipulaciones simples:

 #      FactoryTrace.start #     FactoryTrace.stop 

Ejecución paralela / pieza


A menudo, si las pruebas tardan mucho tiempo, se ejecutan en diferentes procesos en partes, y para que los datos de las fábricas no utilizadas sean correctos, es necesario procesar estadísticas de todas las pruebas.

Esto se puede hacer de la siguiente manera:

 #   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 

Como funciona


Gracias a la implementación de ActiveSupports::Notifications usando ActiveSupports::Notifications es fácil agregar una devolución de llamada cuando se usa la fábrica:

 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 

Y después de recopilar toda la información, encontramos fábricas no utilizadas con un algoritmo simple.

post scriptum


Pruébelo usted mismo y comparta sus comentarios, ¡se lo agradeceré!

Gracias por su atencion

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


All Articles