Fehler bei der Verwendung von RSpecs 'All' Matcher mit Capybaras 'have_css' Matcher

8

Ich beginne gerade mit Feature-Spezifikationen mit RSpec (und Capybara). Ich teste mein ActiveAdmin-Dashboard und möchte überprüfen, ob alle Bereiche eine Auftragstabelle haben, wie in diesem Ausschnitt gezeigt:

%Vor%

Ich habe den all -Matcher in meinen Komponententests sehr oft verwendet, aber er scheint nicht zu funktionieren, wenn ich Capybaras have_css -Matcher einpacke, weil ich den folgenden Fehler erhalte:

%Vor%

Stimmt meine Annahme, dass der integrierte all -Matcher von RSpec auch mit anderen Matchern funktionieren sollte?

Hinweis: Ich verwende describe und it anstelle von feature und scenario in diesem Fall, weil ich Tests anstelle von Benutzerinteraktionsszenarien teste (siehe mein andere Frage ).

    
tristanm 17.09.2014, 23:44
quelle

2 Antworten

11

Leider besteht ein Konflikt zwischen RSpecs all und Capybaras all siehe Capybara Issue 1396 . Das all , das du anrufst, ist tatsächlich Capybaras all .

Lösung 1 - Rufen Sie BuiltIn :: Alle direkt

auf

Die schnellste Lösung wäre, die all -Methode von RSpec direkt aufzurufen (oder zumindest den Code, der ausgeführt wird.

)

Die Erwartung funktioniert, wenn Sie RSpec::Matchers::BuiltIn::All.new anstelle von all verwenden:

%Vor%

Lösung 2 - Definieren Sie alle

neu

Aufruf der BuiltIn: Alles direkt liest nicht nett, also kann ärgerlich werden, wenn es häufig benutzt wird. Eine Alternative wäre, die Methode all neu zu definieren, um die Methode all von RSpec zu verwenden. Fügen Sie dazu das Modul und die Konfiguration hinzu:

%Vor%

Mit der Änderung verhält sich die all in der folgenden Zeile wie die Methode all von RSpec.

%Vor%

Wenn Sie Capybaras all -Methode verwenden möchten, müssen Sie sie jetzt immer mit der Sitzung aufrufen (zB page ):

%Vor%     
Justin Ko 18.09.2014, 03:48
quelle
-1

Ich habe eine sehr ähnliche Herangehensweise an die angenommene Antwort verwendet, aber in einer Cucumber-Umgebung bekam ich Fehler über RSpec.configure , die nicht existierten. Außerdem wollte ich den Matcher etwas außer all nennen, damit ich beide ohne Konflikte verwenden konnte. Dies ist, was ich mit

endete %Vor%

Jetzt kann ich Dinge tun wie:

%Vor%     
mltsy 08.07.2015 21:24
quelle