node.js - 在使用 selenium 运行的 js-app 的集成测试中 stub http-request

标签 node.js selenium vue.js mocking integration-testing

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

在我的测试中,我想在不“接触端点”的情况下修改/ stub 从 api-server 返回的数据(即拒绝请求并返回我的 json)。

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

我知道 json-serverwiremock,但我不想仅仅为了测试目的而修改我的源代码(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/

相关文章:

javascript - Ngclick 上传按钮停止工作且不留痕迹

javascript - Vue.js 模板连接 Prop

javascript - 我的 Vue 组件陷入无限状态是否有原因?

javascript - Node.js 视频的完整路径

python - 计算在 Selenium Python 中打开的选项卡数量

javascript - 如何导出 javascript 类以在测试单元中使用?

selenium - Robot Framework - Selenium2library - 检查页面的 Favicon

html - 不允许宽度缩小

ruby-on-rails - Node.js - 如何为 Express 编写脚手架生成器

node.js - 带有nodejs和express的静态文件夹