2014-03-26 47 views
0

我试图移动一些模块助手内的水豚选择器。来自水豚节点元素的访问模块方法

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 

,我也得到一个NoMethodError:

NoMethodError: undefined method `sub_element' for Capybara::Node::Element:0x006fb54911ef88

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

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

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

回答

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关于方法链接。