Модульный тест запрос-обещание, обещание () не является функцией

Я пытаюсь протестировать эту функцию с помощью sinon/mocha, которая использует request-promise. Я прикрепляю .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('запрос-обещание');

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.


person cusejuice    schedule 28.07.2017    source источник


Ответы (1)


Вы издеваетесь неправильно (но близко).

request-promise — это функция, которая возвращает объект, у которого есть функция promise, возвращающая основное обещание.

То, что вы сделали со своей заглушкой и переустановкой, установлено request-promise как функция, возвращающая обещание.


Возможное исправление:

var requestPromise = sinon.stub().returns({ promise: () => Promise.resolve() });
person Tristan Hessell    schedule 17.11.2017