在Capybara + Rspec中,我可以检查链接是否缺失:
response.body.should_not have_link("link_content")
这很好,但不幸的是,当“link_content”部分匹配某个链接时,测试失败,例如“this_is_a_long_link_content”。在这种情况下,如何更改测试以使其通过?
(也就是说,匹配器不应该部分匹配,它应该只匹配)。
答案 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方法更灵活。