在 js-app 运行 与 selenium 的集成测试中存根 http-request

Stub http-request in integration testing of js-app run with selenium

我使用 webdriveriocucumberjs 在我的 Vue SPA 中进行集成测试。 加载后,我的应用程序确实请求从 api-server.

获取数据

在我的测试中,我想在没有 'touching endpoint' 的情况下从 api-server 修改/存根数据 returned(即拒绝请求和 return 我的 json).

Nockmoxios 和其他人将无法工作,因为我的应用程序加载了 selenium。

我知道 json-serverwiremock,但我不想仅仅为了测试目的而修改我的源代码(url)。

理想情况下 selenium / webdriverio 应该拦截请求或将自定义代码添加到网页和 return 我的 json。

我有什么选择?

Selenium 是为 end-to-end 测试而设计的,它对 mock/stub 请求没有任何意义。

但是有一些方法可以做到:

  • 在代理服务器上启动浏览器,代理服务器将拦截请求并模拟或重定向它们(参见 browsermob-proxy)。
  • 启动带有 Web 扩展的浏览器以拦截和模拟请求。 您可以编写自己的 Web 扩展,或者如果您使用的是 Chrome/Chromium.
  • ,则可以使用类似 Wiremock extension 的扩展
  • 在页面中注入一些Javascript来挂钩XMLHttpRequest。 由于 Selenium 不提供在页面加载之前注入代码的方法,因此它仅适用于 mouse/keyboard 输入时触发的请求。