2017-07-28 2 views
0

Ich versuche Unit-Test diese Funktion mit Sinon/Mocha, die request-promise verwendet. Ich füge die .promise() an, um Zugriff auf alle Bluebird-Versprechungsmethoden zu ermöglichen.Unit-Test-Anfrage-Versprechen, Versprechen() ist keine Funktion

Nach dem request-promise readme:

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 = erfordern ('request-Versprechen');

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

Fehler

ich die folgende Fehlermeldung erhalten: TypeError: requestPromise(...).promise is not a function.

Antwort

0

Sie verspotten ist falsch (aber nah).

request-promise ist eine Funktion, die ein Objekt zurückgibt, das eine Funktion promise hat, die das zugrunde liegende Versprechen zurückgibt.

Was Sie mit Ihrem Stub & rewire getan haben, ist request-promise eine Funktion, die ein Versprechen zurückgibt.


Eine mögliche Lösung:

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