我使用的Cucumber page object类似于下面显示的简化版本。我需要对HTML做一些相当复杂的解析,所以我希望能够使用RSpec对HTML夹具进行单独测试页面对象,但是我有点担心这样做。我猜我需要在Capybara中存根,并将其作为依赖传递给它?
class SomePage
def header
session.find('h1').text
end
def title
session.find('title').text
end
private
def session
@session ||= Capybara.current_session
end
end
答案 0 :(得分:4)
为了回答我自己的问题,我发现Capybara有一个#string方法接受一大块HTML并返回:
Capybara :: Node :: Simple,它暴露了所有Capybara :: Node :: Matchers和Capybara :: Node :: Finders。这允许您以与在Capybara会话中查询当前文档完全相同的方式查询包含HTML的任何字符串。
所以我刚刚在我的类中添加了一个初始化程序,以允许传递该节点并代替Capybara会话。不需要存根或嘲弄,它完全符合我的需要。