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

Ale*_*lov 5 selenium integration-testing mocking node.js vue.js

webdriverio我在我的 Vue SPA 中使用和进行集成测试cucumberjs。加载后,我的应用程序确实请求从 api 服务器获取数据。

在我的测试中,我想修改/存根从 api-server 返回的数据,而不需要“触摸端点”(即拒绝请求并返回我的 json)。

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

I am aware about json-server, wiremock, but I don't want to modify my source code (urls) just for testing purposes.

Ideally selenium / webdriverio should intercept request or add custom code to webpage and return my json.

What options do I have?

Flo*_* B. 2

Selenium 是为端到端测试而设计的,它不提供任何模拟/存根请求的方法。

但有一些方法可以做到这一点:

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