我有类似的东西:
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)
rp
为request-promise-native,其中包含request
答案 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/