【问题标题】:Mocking capybara page object - Rails / RSpec模拟水豚页面对象 - Rails / RSpec
【发布时间】:2016-09-28 22:00:15
【问题描述】:

我正在开发一个网络爬虫,它通过远程站点的搜索栏提交搜索查询来访问远程页面:

class Crawler < PoltergeistDriver

   def fetch_listing_page(query)
    ...
    visit 'whatever.com'
    fill_in('#seachbar', with: query)
    find('#searchbar').native.send_key(:return)
    ...
  end

end

然后我使用page 对象在正文中搜索特定文本,如下所示:

class Crawler < PoltergeistDriver
  ...

  def fetch_listing_data
    ...
    page.all('some element', ...)
    ...
  end

  ...

end

我的问题是我可以在我的测试中模拟这个 page 对象吗?我的猜测是 VCR / Webmock 无法工作,因为请求是从客户端发出的(在我的情况下是 poltergeist)。

编辑:

正如 Thomas 建议的那样,我最终注入了 PoltergeistDriver 实例作为依赖项。这样我可以简单地为测试创建另一个驱动程序(PuffingBilly)并使用静态 html 模拟page.body 的返回。

【问题讨论】:

    标签: ruby-on-rails rspec capybara poltergeist


    【解决方案1】:

    您不能为此使用 WebMock/VCR,但可以使用可编程代理。 PuffingBilly - https://github.com/oesmith/puffing-billy - 与水豚和 poltergeist 完美结合。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-21
      • 1970-01-01
      • 1970-01-01
      • 2012-06-24
      • 2011-04-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多