【发布时间】:2011-12-24 19:14:08
【问题描述】:
在 Capybara+Rspec 中,我可以检查是否缺少链接:
response.body.should_not have_link("link_content")
这很好,但不幸的是,当“link_content”部分匹配链接时,测试失败,例如“this_is_a_long_link_content”。在这种情况下如何更改测试以使其通过?
(即匹配器不应该部分匹配,而应该完全匹配)。
【问题讨论】:
在 Capybara+Rspec 中,我可以检查是否缺少链接:
response.body.should_not have_link("link_content")
这很好,但不幸的是,当“link_content”部分匹配链接时,测试失败,例如“this_is_a_long_link_content”。在这种情况下如何更改测试以使其通过?
(即匹配器不应该部分匹配,而应该完全匹配)。
【问题讨论】:
您还可以使用以下解决方法:
response.body.should_not have_xpath("//a[normalize-space(text())='link_content']")
这是与空白无关的,因此比原始 HTML 方法更灵活。
【讨论】:
来自文档:
如果一切都失败了,您还可以使用 page.html 方法来测试原始 HTML:
这对我有用:
page.html.should match('>\s*Log in\s*</a>')
page.html.should_not match('>\s*link_content\s*</a>')
请注意,要匹配的参数可以是正则表达式。这意味着您可以通过简单地添加 \s* 来使解决方案与空白无关。
【讨论】: