Ruby on rails 3 我可以检查我的HTML代码段只有一个顶级节点吗?

Ruby on rails 3 我可以检查我的HTML代码段只有一个顶级节点吗?,ruby-on-rails-3,rspec,capybara,Ruby On Rails 3,Rspec,Capybara,我正在测试一个helper方法,并将它生成的HTML片段转换为一个Capybara节点(使用node=Capybara::node::Simple.new(HTML)) 我可以检查HTML是否只包含我期望的顶级节点吗?也就是说,如果我期望我的HTML的格式为: <div class="foo"> <div class="part-a">A</div> <div class="part-b">B</div> </div>

我正在测试一个helper方法,并将它生成的HTML片段转换为一个Capybara节点(使用
node=Capybara::node::Simple.new(HTML)

我可以检查HTML是否只包含我期望的顶级节点吗?也就是说,如果我期望我的HTML的格式为:

<div class="foo">
  <div class="part-a">A</div>
  <div class="part-b">B</div>
</div>

A
B

…我如何验证是否存在顶级节点(即
div.foo
),以及该节点是否没有兄弟节点?

经过一点修改,我解决了这个问题。
Capybara::node::Simple.new()
将代码段包装成简单的
对。这意味着以下工作:

# Check that the body has only one direct child
expect(node).to have_css('body > *', count: 1)

# Check that the expected node exists (and hang on to it for subsequent testing)
foo = node.first('body > div.foo')
expect(foo).not_to be_nil