在 Node.js 和浏览器上拦截(模拟)http 请求

Intercept (mock) http requests on Node.js and browser

我不知道我是不是要求太多了,但我想要一个库以 isomorphic/progressive 的方式 intercept/mock HTTP 请求(即在 node.js 上工作相同和浏览器)用于 unit/behavior 测试。有这种东西吗?

我正在为 API 构建一个客户端,它必须在服务器和浏览器上都能工作。 Nock is great but only for Node (as it doesn't work with Browserify,我试过了)。

我可以模拟我将用于请求的库(例如 superagent or rest)。然而,这会将我锁定在某个库中,并且需要对测试进行重大重构。

我的愿望是避免重复测试,尽可能避免对环境的检查。并且不知道实现,因此我需要模拟请求。

我几乎要考虑自己制作一个(或者至少是两个库之间的粘合剂)。

我研究了 superagent were doing their tests. They build a mock Express 服务器如何以他们想要的方式响应并检查匹配项。

但这在浏览器上如何工作?

原来他们用的是 Zuul

Zuul 是一种创建临时服务器以在浏览器中进行 运行 测试的工具。它支持 qunit、mocha、tape 和其他一些测试框架。它还在测试期间接受 运行 的模拟服务器。它 运行 在 Sauce Labs 上进行了测试,它有一个开源项目的免费计划。

这不是我期望的解决方案,但它是一个解决方案。

您可以查看 my project 以查看正确的代码(到此答案时最后一次提交的树的永久链接)。