首页 文章

单元测试请求 - 承诺,promise()不是函数

提问于
浏览
0

我试图使用 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;

Unit test

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' })
  });
});

Error

我收到以下错误: TypeError: requestPromise(...).promise is not a function .

1 回答

  • 0

    你嘲笑是错的(但很接近) .

    request-promise 是一个函数,它返回一个具有返回基础promise的函数 promise 的对象 .

    您使用存根和重新连接完成的操作设置为 request-promise 是一个返回承诺的函数 .


    可能的解决方法:

    var requestPromise = sinon.stub().returns({ promise: () => Promise.resolve() });
    

相关问题