Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如何匹配水豚中的完整链接?_Ruby_Rspec_Capybara - Fatal编程技术网

Ruby 如何匹配水豚中的完整链接?

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

在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方法对原始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方法也可以很容易地使空白不可知-请看我编辑的答案。