gem factory_trace ajuda a limpar suas fábricas

Se você escrever testes para o seu projeto e usar o factory_bot para gerar dados de teste, apresento a jóia factory_trace , que ajudará você a manter suas fábricas e características atualizadas.

O que isso faz?


Durante o lançamento de seus testes, a gema monitora o uso de certas fábricas e, no final da execução, exibe um relatório 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 

Integração de Projetos


Para o RSpec, basta instalar o gem e você pode usá-lo, para qualquer outro testador, basta fazer manipulações simples:

 #      FactoryTrace.start #     FactoryTrace.stop 

Execução paralela / peça


Frequentemente, se os testes demoram muito tempo, eles são executados em diferentes processos em partes e, para que os dados das fábricas não utilizadas estejam corretos, é necessário processar estatísticas de todos os testes.

Isso pode ser feito da seguinte maneira:

 #   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 isso funciona?


Graças à implementação do factory_bot usando o ActiveSupports::Notifications é fácil adicionar um retorno de chamada quando a fábrica é usada:

 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 

E depois de coletar todas as informações, encontramos fábricas não utilizadas com um algoritmo simples.

post scriptum


Tente você mesmo e compartilhe seu feedback, serei grato!

Obrigado pela atenção.

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


All Articles