为页面对象测试存根 Capybara 会话
我将 Cucumber 与类似于下面所示的简化版本的页面对象结合使用。我需要对 HTML 进行一些相当复杂的解析,因此我希望能够使用 RSpec 针对 HTML 固定装置对页面对象进行独立的单元测试,但我对此有点犹豫。我猜我需要在水豚中存根一些东西,并将其作为依赖项传递?
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
I'm using Cucumber with a page object similar to the simplified version shown below. I need to do some quite complex parsing of the HTML, so I'd like to be able to unit test the page object in isolation using RSpec against an HTML fixture, but I'm a bit stuck about to do this. I'm guessing that I need to stub something in Capybara, and pass it in as a dependency?
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
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
为了回答我自己的问题,我发现 Capybara 有一个 #string 方法,它接受一段 HTML 并返回一个:
因此,我只是向我的类添加了一个初始值设定项,以允许传递此节点并用于代替 Capybara 会话。不需要存根或嘲笑,它正是我所需要的。
To answer my own question, I discovered Capybara has a #string method which accepts a chunk of HTML and returns a:
So I just added an initializer to my class to allow this node to be passed and used in place of a Capybara session. No stubbing or mocking required, and it does exactly what I need.