Sinon: 诗农假服务器不影响节点中的axios

创建于 2015-10-19  ·  6评论  ·  资料来源: sinonjs/sinon

使用Sinon的假服务器似乎不会影响Axios ,它在节点环境中使用http (浏览器使用XMLHttpRequest )。

我正在使用摩卡咖啡。 我避免使用karma-runner,因为我认为没有必要。 除非不支持节点http

这是一个演示。 只需克隆它并运行npm test

最有用的评论

我通过使用 axios 的请求方法别名解决了这个问题,而不是传递配置并启动请求。 也就是说,而不是
axios(config)

我用了
axios[method](url, data, config)

所以现在,
sandbox.stub(axios, "get").returns(Promise.resolve({status:200, body: searchResponse}));

这比使用库 moxios 更干净。

Stackoverflow 答案

所有6条评论

实际测试在这里: https :

我认为顺序可以解释这种行为,但不太确定显式沙箱创建是否是正确的做法。 以后还得查。

看起来它仍然不适用于 axios。

http://stackoverflow.com/q/41516044/340760

不知道为什么我第一次没有关闭它:在检查这个时,我看到测试正在 Node.js 中运行。 对于 XHR 实现来说,这_自然地_是完全不受支持的。 如果测试在浏览器中运行,比如使用mochify或 Karma,那将是另一回事,因为 XHR 存根针对浏览器环境。

@brunolm :我还没有看到在浏览器中运行的测试失败,所以在发生之前不会对此进行任何调查。 在 Node 和浏览器的 HTTP 库中运行测试库的 XHR 存根的细节在 Node 上运行时绝对超出了我们的范围😄如果你正在做类似的事情,我会尝试创建一个等价于supertest的 axios

仅供参考:axios 已经有自己的存根库moxios

我通过使用 axios 的请求方法别名解决了这个问题,而不是传递配置并启动请求。 也就是说,而不是
axios(config)

我用了
axios[method](url, data, config)

所以现在,
sandbox.stub(axios, "get").returns(Promise.resolve({status:200, body: searchResponse}));

这比使用库 moxios 更干净。

Stackoverflow 答案

此页面是否有帮助?
0 / 5 - 0 等级