Wenn Sie Tests für Ihr Projekt schreiben und mit
factory_bot Testdaten generieren, präsentiere ich Ihnen das Juwel
factory_trace , mit dem Sie Ihre Fabriken und Eigenschaften auf dem neuesten Stand halten können.
Was macht?
Während des Starts Ihrer Tests überwacht der Edelstein die Verwendung bestimmter Fabriken und zeigt am Ende der Ausführung einen Ergebnisbericht an.
$ 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
Projektintegration
Für RSpec reicht es aus, den Edelstein zu installieren, und Sie können ihn verwenden. Für jeden anderen Tester reicht es aus, einfache Manipulationen durchzuführen:
Parallele / Stückausführung
Wenn Tests lange dauern, werden sie häufig in Teilen in unterschiedlichen Prozessen ausgeführt. Damit die Daten zu nicht verwendeten Fabriken korrekt sind, müssen Statistiken aus allen Tests verarbeitet werden.
Dies kann wie folgt erfolgen:
Wie funktioniert es
Dank der Implementierung von
factory_bot mit
ActiveSupports::Notifications
es einfach, einen Rückruf hinzuzufügen, wenn die Factory verwendet wird:
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
Und nachdem wir alle Informationen gesammelt haben, finden wir unbenutzte Fabriken mit einem einfachen Algorithmus.
post scriptum
Probieren Sie es aus und teilen Sie Ihr Feedback, ich werde Ihnen dankbar sein!
Vielen Dank für Ihre Aufmerksamkeit.