Capybara: Wie man eine gegebene Anzahl der vorhandenen Elemente behauptet

8

Ich habe meinen gesamten Stack von einem auf Rails 3.0 basierenden Projekt auf 3.1 aktualisiert. Ich habe Spezifikationen übergeben, aber meine Funktionen sind jetzt ein bisschen wählerisch. Das Problem, das ich gerade habe, ist dieser Schritt:

%Vor%

Und im Feature selbst könnte ich sagen:

%Vor%

Die Nachricht, die ich bekomme, ist:

%Vor%

Soweit ich das beurteilen kann, stimmen die 5 Elemente mit den 5 überein, die tatsächlich gefunden wurden. Habe ich diesen Code falsch geschrieben oder hat sich etwas geändert? Danke!

    
Steve Ross 08.06.2013, 20:03
quelle

2 Antworten

14

Wenn Sie 5 Elemente überprüfen möchten, sollten Sie nicht #find als Standard verwenden, da Capybara 2.0 diese Methode immer eine Ausnahme auslöst, wenn sie mehr oder weniger als ein Element findet. Dies war eine absichtliche und (glaube ich) eine gute Veränderung.

Um zu bestätigen, dass 5 Elemente vorhanden sind, ist eine geeignete Methode ein rspec-Matcher:

%Vor%

Ich empfehle nicht, match auf prefer_exact zu setzen, wie von @fontno empfohlen, wie in den meisten anderen Situationen, in denen Capybara eine Ausnahme auslösen soll, wenn find mehr als ein Element findet.

    
Andrei Botalov 08.06.2013, 21:05
quelle
2

Ja, dies ist eine Änderung zwischen den Versionen 1.x und 2.x. Sie können sich alle Änderungen im Capybara-Upgrade-Handbuch ansehen diese Blogpost .

Die Methode find löst jetzt einen Fehler ambiguous match aus, wenn mehr als ein Element gefunden wird. Wenn Sie nur ein paar Beispiele haben, können Sie so etwas tun

%Vor%

oder wenn Sie viele Beispiele wie dieses haben, können Sie die Capybara-Konfiguration für die Rückwärtskompatibilität ändern, etwas ähnliches

%Vor%

Möglicherweise müssen Sie dies ändern, damit es funktioniert, aber das ist die allgemeine Idee. Siehe die oben erwähnten Links, alles drin. Hoffe das bringt dich in die richtige Richtung

    
fontno 08.06.2013 20:47
quelle