对于提供一些 html 片段(用作 ajax 调用)的控制器,我有一个看起来像这样的视图规范:
it "should not contain html element" do
render
rendered.should have_selector('div')
rendered.should_not have_selector('html')
end
由于我们的 ajax 内容加载器不允许呈现完整的 html 页面,因此我想检查结果是否不包含 html 标记。
现在的结果rendered
是一个简单的 div 标签:
puts rendered
导致
"<div>Some text</div>"
但是,测试失败:
Failure/Error: rendered.should_not have_selector('html')
Capybara::ExpectationNotMet:
expected not to find css "html", found 1 match: "Some text"
我也试过了
rendered.should_not have_xpath('//html')
rendered.should_not have_css('html')
rendered.should have_no_xpath('//html')
rendered.should have_no_css('html')
但结果保持不变。
为什么要检查匹配里面的html
文本?即使是对导致相同结果的测试。div
body