正则表达式不与Rails,Minitest和Capybara合作

时间:2017-01-31 00:55:24

标签: regex ruby-on-rails-4 capybara minitest

我正在使用Capybara和Minitest来测试rails 4 app。我有这样的测试线可以工作:

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

但这不起作用:

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

如果我将该正则表达式粘贴到Regexr.com和regex101.com之类的地方,则该正则表达式可以完美地对准正在测试的页面文本。

对Rails4 / minitest支持什么样的Regex有一些限制吗? 我真的只是想确认word2是在文字后面的。如果使用正则表达式无法做到这一点,那么在minitest中有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

你不能解释你的意思"不起作用"但我会假设你的意思是正则表达式与页面不匹配,而不是你得到关于无效正则表达式的错误。如果您正在使用Capybara中支持JS的任何驱动程序,那么您的失败可能是因为当您调用must_match时,内容实际上并不在页面上,这是因为你使用了错误的方法。要在使用Capybara w / minitest时检查页面上的文字,您应该使用assert_text

page.assert_text(/word.*word2/)

当您致电page.body.must_match...时,您将正文html变为静态字符串,然后检查其匹配一次,而assert_text包含等待/重试行为以处理不是&#的网页39; t完成加载,动态变化等。