Capybara节点元素的访问模块方法

时间:2014-03-26 11:51:56

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

我试图将一些Capybara选择器移到模块助手中。

module Helper
  def element
    page.all(:css, '.element_class')
  end

  def sub_element
    find('.sub_element_class')
  end
end

我的测试是

scenario 'get the sub element'
  visit 'path'
  element.sub_element.click_button 'Button'

  expect(page).to have_content('something')
end

我得到NoM​​ethodError:

  

NoMethodError:          未定义的方法`sub_element' for Capybara :: Node :: Element:0x006fb54911ef88

但是,如果我直接使用方法'发现'而不是我自己的方法' sub_element',一切都按预期工作。

element.find('.sub_element_class').click_button 'Button'

我无法在文档中找到是否可以在节点元素上使用模块的方法。

1 个答案:

答案 0 :(得分:0)

您需要返回self来链接此方法。

module Helper
  def element
    page.all(:css, '.element_class')
    self # Add this
  end

  def sub_element
    find('.sub_element_class')
  end
end
关于方法链的

More info