0

我有类似的东西:

sandbox.stub(rp, 'get').resolves(successResponse)

它在遇到此代码时返回我的自定义响应:

return await rp.get(url, options)

但我怎么能做这样的事情:

    sandbox.stub(rp).resolves(successResponse)

哪个可以在遇到此代码时返回自定义响应?

    return await rp(url, options)

当我尝试“存根”整个对象时,在运行测试时出现此错误:

TypeError: Attempted to wrap undefined property undefined as function
      at wrapMethod (node_modules\sinon\lib\sinon\util\core\wrap-method.js:70:21)
      at stub (node_modules\sinon\lib\sinon\stub.js:58:44)
      at Object.stub (node_modules\sinon\lib\sinon\collection.js:93:33)

rprequest-promise-native,它包装了request

4

2 回答 2

1

从上面评论中的@Troopers 链接来看,这似乎是不可能的:在不伪造整个模块加载系统的情况下,这样做在技术上是不可能的。

所以我在这里遵循了建议:https ://github.com/request/request/issues/2181并使用 mock-require 到 stub rp。我还更改了我曾经调用的代码rp.get(),以便它只是调用rp(),因为我也不知道如何存根rp()rp.get()

于 2018-01-24T16:59:26.760 回答
0

您可能会发现关于 Link Seams 的 Sinon HowTo 很有帮助:http ://sinonjs.org/how-to/link-seams-commonjs/

于 2018-01-26T09:00:08.567 回答