2017-01-31 4 views
0

Ich verwende Capybara und Minitest zum Testen einer Rails 4 App. Ich habe Testlinien wie diese, die Arbeit zu tun:Regex arbeitet nicht mit Rails, Minitest und Capybara

page.body.must_match(/word/) 
page.body.must_match(/word2/) 

aber das funktioniert nicht:

page.body.must_match(/(word).*(word2)/) 

Wenn ich einfügen, dass regex in so etwas wie Regexr.com und regex101.com, dass Regex funktioniert perfekt gegen den zu testenden Seitentext.

Gibt es also Einschränkungen hinsichtlich der Unterstützung von Regex mit Rails4/Minitest? Ich will nur bestätigen, dass Word2 nach dem Wort im Text kommt. Wenn dies mit Regex nicht möglich ist, gibt es einen besseren Weg, dies in Minitest zu tun?

Antwort

0

Sie erklären nicht, was Sie mit "funktioniert nicht" meinen, aber ich gehe davon aus, dass Sie meinen, dass die Regex nicht mit der Seite übereinstimmt, statt dass Sie eine Fehlermeldung über eine ungültige Regex erhalten. Wenn Sie einen der Treiber in Capybara verwenden, die JS unterstützen, liegt Ihr Fehler wahrscheinlich daran, dass der Inhalt nicht auf der Seite ist, wenn Sie must_match aufrufen. Dies liegt daran, dass Sie die falschen Methoden verwenden. Um zu überprüfen, für Text auf einer Seite, wenn Capybara mit w/Minitest sollten Sie assert_text

page.assert_text(/word.*word2/) 

verwenden, wenn Sie anrufen page.body.must_match... Sie bekommen den Körper html in eine statische Zeichenfolge und dann für Spiel Überprüfung auf einmal, während assert_text enthält Warte-/Wiederholungsverhalten, um mit Seiten umzugehen, die nicht fertig geladen sind, dynamische Änderungen usw.

Verwandte Themen