2016-05-12 9 views
-1

Ich habe 2 Szenarien in Capybara. Der erste prüft, ob ein Link auf der Seite vorhanden ist und der zweite überprüft, ob dieser nicht vorhanden ist.Wie finde ich heraus, ob auf der Seite in Rspec/Capybara ein Link nicht existiert?

konnte ich den ersten Test bestanden erhalten, indem Sie die folgende Methode:

expect(page).to have_link('act_id') 

Ich habe versucht, die folgende Methode für den zweiten Test.

expect(page).to not_have_link('act_id') 

aber ich bin immer folgende Fehler

NoMethodError: undefined method `not_have_link' 

Wie kann ich testen, ob ein Link auf der Seite existiert nicht ??

Ruby-Version: 2.2

Rails-Version: 4,2

+0

versuchen so etwas wie dies mit expath (Seite) .not_to have_xpath ('a') erwarten (Seite) .to have_no_xpath ('a') –

Antwort

4
expect(page).to have_no_link('act_id') 
+0

Sie können auch 'expect (page) .not_to have_link ('act_id')' –

+0

Es gibt einige Feinheiten, die zwischen diesen beiden Arten der Geltendmachung beachtet werden müssen. 'have_no_link' nimmt an, dass der Link nicht da ist und geht sofort, wenn er nicht da ist, während' have_link' annimmt, dass der Link da sein sollte und länger braucht, um sein Ergebnis zurückzugeben, da er darauf wartet, dass der Link gefunden wird. – jfornoff

+1

Tatsächlich existieren diese Feinheiten nicht, wenn man die RSpec-Matcher benutzt (was dieses Beispiel ist). In diesem Fall sind ".not_to have_link" und ".to have_no_link" funktional äquivalent, da RSpec nicht_to_to_not verarbeitet. Die Feinheiten, die Sie erwähnen, existieren, wenn Sie boolesche Überprüfungen (has_link ?, has_no_link? Usw.) oder die von capybara bereitgestellten Methoden assert_xxx verwenden - –

Verwandte Themen