2017-07-28 1 views
0

J'essaie de tester cette unité avec sinon/moka qui utilise request-promise. Je joins le .promise() pour permettre l'accès à toutes les méthodes de promesses de Bluebird.Test d'unité request-promise, promise() n'est pas une fonction

Selon le readme 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 ('demande-promesse');

function requestWrapper(opts) { 
    // Adds .promise() to allow access to Bluebird methods 
    return requestPromise(opts).promise(); 
} 

module.exports = requestWrapper; 

test Unité

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

d'erreur

Je reçois l'erreur suivante: TypeError: requestPromise(...).promise is not a function.

Répondre

0

Vous vous moquez est faux (mais proche).

request-promise est une fonction qui retourne un objet qui a une fonction promise qui renvoie la promesse sous-jacente.

Ce que vous avez fait avec votre talon & rewire est défini request-promise comme étant une fonction qui renvoie une promesse.


Une solution possible:

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