2016-11-16 1 views
0

Je me demande pourquoi les deux méthodes ci-dessous retournent des choses différentes. Je m'attendais à ce que les deux retournent une promesse résolue avec la valeur de chaîne ''.sinon-comme-promis ne pas retourner correctement?

en utilisant le module sinon:

sinon.stub(db, 'query').returns(Promise.resolve('<VALUE>')); 
console.log(db.query()); 
// echos: Promise { '<VALUE>' } 

Et puis en utilisant le module sinon-as-promised:

sinon.stub(db, 'query').resolves('<VALUE>'); 
console.log(db.query()); 
/* echos: 
    { then: [Function: then], 
     catch: [Function], 
     finally: [Function] } 
*/ 

Je dois être en train de lire la documentation mal?

Répondre

0

Le documentation par rapport à stub.resolves(value) stipule que:

Lorsqu'elle est appelée, le talon renverra un objet « thenable » qui retourner une promesse pour la valeur fournie.

Vous consignez l'objet "thenable" dans la console, pas le Promise retourné par cet objet "thenable". Vous pouvez vous connecter à la valeur en faisant ceci:

sinon.stub(db, 'query').resolves('<VALUE>').then(function(value){ 
    console.log(value); // <VALUE> 
}); 

vous pouvez également connecter le retour Promise en faisant ceci:

var promise = sinon.stub(db, 'query').resolves('<VALUE>').then(function({ 
}); 

console.log(promise);