水豚未定义的方法 'current_scope'

Capybara undefined method 'current_scope'

我有以下代码

scenario "it should not appears submenus' links if it doesn't has any" do
  expect(page.find('li.main-category', text: "Stargazing")).not_to have_tag('ul.nested')
end

当我 运行 测试时我得到这个错误

 NoMethodError:
 undefined method `current_scope' for #<Capybara::Node::Element:0x0055d1ab86e430>

我正在尝试测试这段代码

<ul class="menu vertical">
   <li class="main-category"><a href="#">Solar System</a>
     <ul class="nested vertical menu">
       <li class="subcategory"><a href="#">Planets</a></li>
     </ul>
   </li>
   <li class="main-category"><a href="#">Stargazing</a></li>
</ul>

带有文本 'Stargazing' 的 li 标签不应包含 ul 标签

有什么想法吗?

我不确定您使用的 have_tag 匹配器来自哪个库,但这不是 Capybara 匹配器并且与 Capybara 不兼容。你要

expect(page.find('li.main-category', text: "Stargazing")).not_to have_css('ul.nested')

have_css('ul') 如果您试图确保根本没有 ul 元素,而不仅仅是没有嵌套 class 的 ul 元素。

还要确保您的水豚已更新。