我正在尝试使用Sinon在测试中模拟request-promise . 据我所知,Sinon嘲笑对象的方法,但request-promise只返回一个函数 . 有没有办法模拟一个必需的功能?
var rp = require('request-promise');
var User = require('../../models/user');
// this works
sinon.stub(User, 'message', function() {});
// This is what I'd like to do to request-promise
sinon.stub(rp, function() {});
我也研究过mockrequire和proxyquire,但我认为他们都遇到了类似的问题 .
2 回答
I found a (sort of) solution here .
基本上,你背负
call
(apply
也可以):它完成了工作,虽然我不喜欢到处都做
rp.call
,所以我仍然希望有更好的解决方案 .以下示例应该为您解决问题 . 通过使用proxyquire,你可以包装
request-promise
并避免存根.post
,.get
,.call
等 . 在我看来更清洁 .myModule.js
:myModule.spec.js
: