Ruby 如何匹配水豚中的完整链接?
在Capybara+Rspec中,我可以检查是否缺少链接:Ruby 如何匹配水豚中的完整链接?,ruby,rspec,capybara,Ruby,Rspec,Capybara,在Capybara+Rspec中,我可以检查是否缺少链接: response.body.should_not have_link("link_content") 这很好,但不幸的是,当“link\u content”部分匹配一个链接时,测试失败,例如“This\u is\u a\u long\u link\u content”。在这种情况下,如何更改测试以使其通过 (也就是说,匹配器不应部分匹配,而应完全匹配)。来自文档: 如果所有其他方法都失败,您还可以使用page.html方法对原始htm
response.body.should_not have_link("link_content")
这很好,但不幸的是,当“link\u content”部分匹配一个链接时,测试失败,例如“This\u is\u a\u long\u link\u content”。在这种情况下,如何更改测试以使其通过
(也就是说,匹配器不应部分匹配,而应完全匹配)。来自文档:
如果所有其他方法都失败,您还可以使用page.html方法对原始html进行测试:
这对我很有用:
page.html.should match('>\s*Log in\s*</a>')
page.html.should_not match('>\s*link_content\s*</a>')
page.html.应匹配(“>\s*登录\s*”)
page.html.不应匹配('>\s*链接\u内容\s*)
请注意,要匹配的参数可以是正则表达式。这意味着您只需从文档中添加\s*
即可使解决方案的空白不可知:
如果所有其他方法都失败,您还可以使用page.html方法对原始html进行测试:
这对我很有用:
page.html.should match('>\s*Log in\s*</a>')
page.html.should_not match('>\s*link_content\s*</a>')
page.html.应匹配(“>\s*登录\s*”)
page.html.不应匹配('>\s*链接\u内容\s*)
请注意,要匹配的参数可以是正则表达式。这意味着您可以通过简单地添加
\s*
使解决方案的空白不可知。您还可以使用以下解决方法:
response.body.should_not have_xpath("//a[normalize-space(text())='link_content']")
这与空白无关,因此比原始HTML方法更灵活。您还可以使用以下解决方法:
response.body.should_not have_xpath("//a[normalize-space(text())='link_content']")
这与空白无关,因此比原始HTML方法更灵活。我没有时间尝试它,因为Niklas的答案很好,但这是一个很好的回退,谢谢。我没有时间尝试它,因为Niklas的答案很好,但这是一个很好的回退,谢谢。我不知道xpath可以如此强大,很高兴知道这一点(这意味着你的答案值得投票)。然而,原始HTML方法也可以很容易地使空白变得不可知-请看我编辑的答案。我不知道xpath可以如此强大,很高兴知道这一点(这意味着你的答案值得投票;)。然而,原始HTML方法也可以很容易地使空白不可知-请看我编辑的答案。