我使用 webdriverio
和 cucumberjs
在我的 Vue SPA 中进行集成测试。
加载时,我的应用程序确实请求从 api-server 获取数据。
在我的测试中,我想在不“接触端点”的情况下修改/ stub 从 api-server 返回的数据(即拒绝请求并返回我的 json)。
Nock
、moxios
和其他程序将无法工作,因为我的应用程序加载了 selenium。
我知道 json-server
、wiremock
,但我不想仅仅为了测试目的而修改我的源代码(url)。
理想情况下 selenium
/webdriverio
应该拦截请求或将自定义代码添加到网页并返回我的 json。
我有哪些选择?
最佳答案
Selenium 专为端到端测试而设计,它不提供任何模拟/ stub 请求的方法。
但是有一些方法可以做到:
- 在代理服务器上启动浏览器,代理服务器将拦截请求并模拟或重定向它们(参见 browsermob-proxy)。
- 启动带有 Web 扩展程序的浏览器以拦截和模拟请求。 您可以编写自己的 Web 扩展,也可以使用类似 Wiremock extension 的扩展。如果您使用的是 Chrome/Chromium。
- 在页面中注入(inject)一些Javascript来 Hook
XMLHttpRequest
. 由于 Selenium 不提供在页面加载之前注入(inject)代码的方法,因此它只能处理鼠标/键盘输入触发的请求。
关于node.js - 在使用 selenium 运行的 js-app 的集成测试中 stub http-request,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49226414/