【发布时间】: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