Wir haben kürzlich damit begonnen, das undokumentierte Ember.testing-Flag in unseren Jasmin-Spezifikationen zu verwenden, das die Autorun-Runloop-Funktion effektiv deaktiviert. Wir haben festgestellt, dass wir damit beim manuellen Code-Umbruch in Runloops deutlich expliziter vorgehen müssen. Dies hat uns aber auch mehr Stabilität in unseren Spezifikationen gegeben, da Probleme in der Art und Weise, wie wir die Spezifikation geschrieben haben, hervorgehoben und die Bindung dokumentiert wird sind wichtig für den zu testenden Code.
Gibt es eine offizielle Zeile zur Verwendung dieser Funktion? Es scheint sich in unserer App ziemlich positiv ausgewirkt zu haben, aber ich vermute, dass die meisten Leute sich dessen nicht bewusst sind.
Ja, Sie sollten definitiv Ember.testing = true
in Ihren Tests setzen.
Ohne Ember.testing
werden Runloops automatisch mit setTimeout
geplant, von wo die Instabilität kommt, von der Sie bemerken.
Hinweis: Im Moment, wenn Sie Ember.testing
aktivieren, müssen Sie vielen Zeilen in Ihrem Testcode unbedingt mit Em.run =>
vorangestellt werden, wie zB
Wenn Sie dies vergessen, wird es sich lautstark beschweren, oder der Eigenschaften- / App-Status wurde nicht aktualisiert, wenn Sie versuchen, Assertionen dagegen auszuführen.
Vielleicht wird dies eines Tages verbessert, aber im Moment ist es kein Problem, wenn Ihr Testcode mit run
-Aufrufen versehen ist.
Ich habe nie das Ember.testing
-Flag verwendet. Es würde mich interessieren zu hören, wie es zu mehr Stabilität in Ihren Spezifikationen geführt hat. Ich habe Ember-Apps in Jasmine ohne Probleme getestet.
Ich hatte Erfolg, wenn ich die Verwendung von Ember.run()
und Ember.run.sync()
in der Ember-Testsuite nutze.
Tags und Links ember.js