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

时间:2011-12-23 08:45:56

标签: ruby rspec capybara

在Capybara + Rspec中,我可以检查链接是否缺失:

response.body.should_not have_link("link_content")

这很好,但不幸的是,当“link_content”部分匹配某个链接时,测试失败,例如“this_is_a_long_link_content”。在这种情况下,如何更改测试以使其通过?

(也就是说,匹配器不应该部分匹配,它应该只匹配)。

2 个答案:

答案 0 :(得分:4)

来自文档:

  

如果所有其他方法都失败了,您还可以使用page.html方法来测试原始HTML:

这对我有用:

page.html.should match('>\s*Log in\s*</a>')
page.html.should_not match('>\s*link_content\s*</a>')

请注意,匹配的参数可以是正则表达式。这意味着只需添加\s*即可使解决方案与空白无关。

答案 1 :(得分:4)

您还可以使用以下解决方法:

response.body.should_not have_xpath("//a[normalize-space(text())='link_content']")

这是与空白无关的,因此比原始HTML方法更灵活。