Ich benutze Ruby on Rails mit Gurke und Capybara.
Wie würde ich einen einfachen Bestätigungsbefehl testen ("Sind Sie sicher?")?
Wo finde ich weitere Dokumentation zu diesem Thema?
automated-tests
capybara
integration-testing
Yuval Karmi
quelle
quelle
Antworten:
In Capybara scheint es leider keine Möglichkeit zu geben. Wenn Sie Ihre Tests jedoch mit dem Selenium-Treiber (und wahrscheinlich anderen Treibern, die JavaScript unterstützen) ausführen, können Sie ihn hacken. Überschreiben Sie die
confirm
Methode, um immer true zurückzugeben, bevor Sie die Aktion ausführen, die den Bestätigungsdialog aufruft . Auf diese Weise wird der Dialog nie angezeigt und Ihre Tests können fortgesetzt werden, als hätte der Benutzer die Schaltfläche OK gedrückt. Wenn Sie das Gegenteil simulieren möchten, ändern Sie es einfach in false.quelle
Der Selentreiber unterstützt dies jetzt
Von Capybara aus würden Sie folgendermaßen darauf zugreifen:
oder
oder
quelle
page.driver.browser
in Dereks AntwortIch habe diese beiden Webschritte implementiert in
/features/step_definitions/web_steps.rb
:quelle
Wenn Sie die angezeigte Nachricht speziell testen möchten, finden Sie hier eine besonders hackige Möglichkeit. Ich unterstütze es nicht als schönen Code, aber es erledigt den Job. Sie müssen http://plugins.jquery.com/node/1386/release laden oder es so ändern, dass Cookies nativ ausgeführt werden, wenn Sie jQuery nicht möchten.
Verwenden Sie diese Art von Geschichte:
Und diese Schritte
quelle
Aktualisierung für aktuelle Versionen von Capybara. Die meisten Capybara-Treiber unterstützen heute die modale API. Um ein Bestätigungsmodal zu akzeptieren, würden Sie tun
Dies kann in Gurke mit so etwas verwendet werden
Klicken Sie auf die Schaltfläche "Benannt" und akzeptieren Sie ein Bestätigungsfeld mit einer Textnachricht
quelle
Der Capybara-Webkit- Treiber unterstützt dies ebenfalls.
quelle
quelle
Prickle bietet einige praktische Methoden für die Arbeit mit Popups in Selen und Webkit
quelle
Das Wesentliche enthält Schritte zum Testen eines JS-Bestätigungsdialogs in Rails 2 und 3 mit einem beliebigen Capybara-Treiber.
Es ist eine Anpassung einer vorherigen Antwort, benötigt jedoch nicht das jQuery Cookie-Plugin.
quelle
Versuchte die obigen Antworten ohne Glück. Am Ende hat das bei mir funktioniert:
quelle