我试图让RSpec集成测试失败。
给出以下HTML片段:
<article id="content">
<section>
<p>There aren't any travel promotions... yet!</p>
</section>
</article>
当我运行以下Rspec测试时:
describe SomeController do
render_views
describe "GET 'promotion_index'" do
it "should display an empty page given a blank page fragment and no promotions " do
get :promotion_index
response.should have_selector("#content section:first-of-type", :content => "")
end
end
end
然后测试失败
但事实并非如此。无论选择器中是否有内容,它都能很好地传递。
为了清楚起见,我不想测试<p>
内容不存在。我想测试<article id="content"><section /></article>
根本不包含任何内容。
答案 0 :(得分:0)
您是在谈论确保没有子标签或中间没有文字?我不使用RSpec的have_selector方法。我也无法让它上班。我只是使用Nokogiri。您只需将渲染对象传入Nokogiri :: HTML(渲染),然后解析HTML即可进行测试。这很简单。
试一试。
html = Nokogiri::HTML(rendered)
html.xpath("//[@id='content']/section").each do |node|
node.children_should be_empty?
end
这样的事情。我不太确定。