Capybara undefined方法' current_scope'

时间:2017-03-14 18:54:16

标签: ruby-on-rails rspec capybara rspec-rails

我有以下代码

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>

li 标记,带有文字&#39; Stargazing&#39;不应包含 ul 标记

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

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

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

have_css('ul')如果你想确保根本没有ul元素,而不是没有一个嵌套类的ul元素。

还要确保您的Capybara已更新。