Ich führe eine Angular-App aus und beim Testen auf dem Winkelmesser a click()
weiß ich nicht, wann ich das Versprechen mit einem then()
lösen soll.
Ich habe das auf der Protractor API gefunden:
Ein Versprechen, das gelöst wird, wenn der Klickbefehl abgeschlossen ist.
Also, sollte ich click().then()
in jedem click
verwenden?
Soll ich also bei jedem Klick click (). then () verwenden?
Definitiv nicht.
Es wird nicht benötigt, weil der Winkelmesser / WebDriverJS diesen Mechanismus "Kontrollfluss" das ist im Grunde eine Warteschlange von Versprechen, die gelöst werden müssen:
WebDriverJS verwaltet eine Warteschlange mit ausstehenden Versprechungen, die als Steuerelement bezeichnet werden fließen, um die Ausführung organisiert zu halten.
und Winkelmesser wartet natürlich und out-of-the-box auf Winkel:
Sie müssen Ihrem Test nicht mehr warten und schlafen. Winkelmesser kann den nächsten Schritt in Ihrem Test automatisch ausführen Die Webseite beendet ausstehende Aufgaben, sodass Sie sich keine Sorgen machen müssen warten auf die Synchronisierung Ihres Tests und der Webseite.
Was zu einem ziemlich einfachen Testcode führt:
%Vor% Wenn Sie jedoch Synchronisierungs- / Timing-Probleme haben oder Ihre getestete Anwendung nicht kantig ist, können Sie sie lösen, indem Sie click()
explizit mit then()
auflösen und innerhalb des Klickrückrufs fortfahren:
In diesen Fällen gibt es auch Explicit Waits , aber das ist hier nicht relevant.
Ja, du solltest.
Vielleicht gerade jetzt ist es nicht notwendig, aber vielleicht in den nächsten Versionen ist es.
Also, wenn click
ein Versprechen zurückgibt, sollten Sie es verwenden.
Tags und Links javascript angularjs automated-tests protractor