2017-01-31 70 views
0

我正在使用Capybara和Minitest來測試rails 4應用程序。我有測試線,如這些是做的工作:正則表達式不能與Rails,Minitest和Capybara一起工作

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

但是,這並不工作:

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

如果我粘貼正則表達式成類似Regexr.com和regex101.com,該正則表達式的作品完美針對正在測試的頁面文本。

因此,Rails4/minitest支持哪些正則表達式有一些限制? 我真的只想確認word2是在文字後面出現的。如果這不能用正則表達式來完成,有沒有更好的方法在minitest中做到這一點?

回答

0

你不解釋你的意思是「不起作用」,但我會假設你的意思是說,正則表達式不匹配頁面,而不是你得到關於無效正則表達式的錯誤。如果您使用支持JS的Capybara中的任何驅動程序,那麼您的失敗很可能是因爲當您調用must_match時,內容並未出現在頁面上,這是因爲您使用了錯誤的方法。要檢查文本頁面上使用水豚當W/MINITEST你應該使用assert_text

page.assert_text(/word.*word2/) 

當你調用page.body.must_match...你得到身體的HTML爲靜態字符串,然後一次檢查比賽就可以了,而assert_text包含等待/重試行爲以處理未完成加載的頁面,動態更改等。

相關問題