我正在尝试使用request-promise
的sinon / mocha对此函数进行单元测试。我附上.promise()
以允许访问所有Bluebird承诺方法。
根据request-promise
自述文件:
rp(...).promise() or e.g. rp.head(...).promise() which returns the underlying promise so you can access the full Bluebird API
myModule.js var requestPromise = require('request-promise');
function requestWrapper(opts) {
// Adds .promise() to allow access to Bluebird methods
return requestPromise(opts).promise();
}
module.exports = requestWrapper;
单元测试
var Promise = require('bluebird');
var requestPromise = sinon.stub().returns(Promise.resolve());
var rewire = require('rewire');
var myModule = rewire('./myModule');
myModule.__set__({
requestPromise: requestPromise
});
describe('myModule', function() {
var testPromise;
it('should...', function() {
testPromise = myModule.requestWrapper({ method: 'GET', url: 'http://someurl.com' })
});
});
错误
我收到以下错误:TypeError: requestPromise(...).promise is not a function
。
答案 0 :(得分:0)
你嘲笑是错的(但很接近)。
request-promise
是一个函数,它返回一个具有函数promise
的对象,该对象返回潜在的承诺。
你用你的存根和你做了什么重新排列设置为request-promise
是一个返回承诺的函数。
可能的解决办法:
var requestPromise = sinon.stub().returns({ promise: () => Promise.resolve() });