Warnung wegen Vernachlässigung von Capybara

8

Ich rüste von Gleisen 3.2.19 auf Schienen 4.1.5 auf, verwende rspec-rails 2.14.0.rc1 und capybara 2.4.1. Alle Tests bestehen und ich habe nur noch eine Verwarnungswarnung:

%Vor%

Die Codezeile, die das verursacht, ist

%Vor%

Wie ändere ich diese Zeile, um die Verwarnungswarnung zu beseitigen?

    
Obromios 09.10.2014, 09:49
quelle

5 Antworten

10

Wenn die Ausnahme besagt:

  

Bitte verwenden Sie stattdessen Capybara :: Session # accept_confirm.

Sie wollen wahrscheinlich:

%Vor%

Beachten Sie, dass accept_confirm anstelle des Treibers für die Capybara :: Session ausgeführt wird.

Diese Methode erwartet einen Block, der den Bestätigungsalarm auslöst. Zum Beispiel:

%Vor%     
Justin Ko 10.10.2014, 18:31
quelle
5

Justin Ko's Antwort ist korrekt bezüglich der Verwendung von #accept_confirm - es ist

%Vor%

oder Sie können

tun %Vor%

was bestätigt, dass "Bist du sicher?" ist die Aufforderung im Bestätigungsfeld angezeigt.

Haben Sie in Ihrem versagenden Test zufällig mit einem anderen Modal zu tun? capybara-webkit hatte einen Bug mit mehreren Mods, der vor ein paar Tagen behoben wurde - Ссылка . Es ist noch nicht in einer veröffentlichten Version.

    
Thomas Walpole 13.10.2014 21:14
quelle
3

Ich hatte 50/50 Erfolg mit Justin Ko's Antwort. Derjenige, der funktionierte, hatte einen solchen Code:

%Vor%

und dieser Test:

%Vor%

Der Test, der fehlschlägt (aber Code hat, der im Browser funktioniert), hat Code

%Vor%

und testen

%Vor%

Die Fehlermeldung war

%Vor%

Ich habe versucht, die method: :delete in den :data Hash zu verschieben, aber das hat nicht geholfen.

Es stellt sich heraus, dass die Verwarnungswarnung tatsächlich zwei Fehler im Code gefunden hat, da ich die Syntax von rails 3 zur Bestätigung verwendete, also nicht den :data Hash verwendete, also war mein Code defekt, aber der page.driver.accept_js_confirms! Test nicht Heb es auf. Das hat sich also gelohnt.

    
Obromios 13.10.2014 10:01
quelle
0

Ich habe page.driver.accept_js_confirms ersetzt! mit:

page.execute_script ('window.confirm = function () {return true}')

Und der Test ist bestanden.

Das war aus der Dokumentation hier: Ссылка

Und Hilfe von den Internets. Nun, das sagt uns noch nicht, wie man accept_confirm benutzt, also suche ich immer noch nach dieser Antwort.

Der eigentliche Code sieht so aus:

%Vor%

Ehrlich gesagt, ich denke, es ist nur page.accept_confirm mit etwas anderes, aber ich kann nicht herausfinden, was oder in diesem Block übergeben.

    
Art 10.10.2014 17:47
quelle
0

Funktioniert perfekt für mich:

%Vor%     
k1r8r0wn 26.04.2016 05:39
quelle