存根对象而不需要方法

时间:2018-01-23 22:24:47

标签: node.js typescript sinon stub request-promise

我有类似的东西:

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

2 个答案:

答案 0 :(得分:1)

从上面评论中的@Troopers链接看来,这似乎是不可能的:Doing this is not technically possible without faking the entire module loading system.

所以我按照这里的建议:https://github.com/request/request/issues/2181并使用mock-require来存根rp。我还更改了以前调用rp.get()的代码,因此它只调用rp(),因为我还无法弄清楚如何存根rp()rp.get()

答案 1 :(得分:0)

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