Synchrone Callbacks testen
Problem
Wenn Sie Code mit vielen Callbacks testen, passiert es gelegentlich, dass ein Test, der eigentlich fehlschlagen sollte, doch erfolgreich ist, und sich die fragliche Assertion nie im Testergebnis zeigt. Wenn sich die Assertions in einem Callback befinden, der niemals aufgerufen wird, werden auch die Assertions selbst nicht erreicht, womit der Test still und leise durchgeht.
Lösung
QUnit stellt eine spezielle Assertion bereit, um die Anzahl an Assertions festzulegen, die ein Test enthält. Wird der Test nicht mit der korrekten Anzahl an Assertions abgeschlossen, schlägt diese Assertion fehl, egal was für Ergebnisse die anderen Assertions erzeugt haben (wenn überhaupt).
Die Anwendung ist ganz einfach. Rufen Sie
einfach am Anfang des Tests expect()
mit der Anzahl der erwarteten Assertions als einzigem Argument
auf:
test("Ein Test", function() { expect(1); $("input").myPlugin({ initialized: function() { ok(true, "Plugin initialisiert"); } }); });
Diskussion
expect()
ist dann am
nützlichsten, wenn man wirklich Callbacks testet. Läuft der gesamte
Code im Gültigkeitsbereich der Test-Funktion, bietet expect()
keinen zusätzlichen Wert – jeder Fehler,
der Assertions von ihrer Ausführung abhält, würde sowieso dazu
führen, dass der Test fehlschlägt, weil der Test Runner den Fehler
abfängt und den Test als nicht erfolgreich klassifiziert.