2017-01-31 11 views
0

Я использую Capybara и Minitest для тестирования рельсов 4 приложения. У меня есть тест такие строки, которые делают работу:Regex не работает с Rails, Minitest и Capybara

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

, но это не работает:

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

Если я вставляю, что регулярное выражение в нечто вроде Regexr.com и regex101.com, что регулярное выражение работает отлично против тестируемого текста страницы.

Так что есть некоторые ограничения относительно того, что Regex поддерживается с Rails4/minitest? Я действительно просто хочу подтвердить, что слово2 приходит после слова в тексте. Если это невозможно сделать с помощью регулярного выражения, есть ли лучший способ сделать это в minitest?

ответ

0

Вы не объясняете, что вы подразумеваете под «НЕ работает», но я предполагаю, что вы имеете в виду, что регулярное выражение не соответствует странице, а не появляется ошибка в отношении недопустимого регулярного выражения. Если вы используете какие-либо драйверы в Capybara, которые поддерживают JS, то ваш сбой, скорее всего, потому, что контент на самом деле не на странице при вызове must_match, и это потому, что вы используете неправильные методы. Для проверки текста на странице при использовании Capybara ж/MiniTest вы должны использовать assert_text

page.assert_text(/word.*word2/) 

Когда вы звоните page.body.must_match... вы получаете HTML тела в статическую строку, а затем проверить на матч на него один раз, в то время как assert_text включает в себя поведение ожидания/повторного запуска для обработки страниц, которые не были загружены, динамические изменения и т. Д.