Sinon: Les stubs doivent avoir un `resolves` et` rejette` pour définir les résultats de la promesse

Créé le 8 août 2015  ·  13Commentaires  ·  Source: sinonjs/sinon

C'est un sucre de syntaxe très simple:

var stub = sinon.stub();
stub.resolves("hello");
//is the same as
stub.returns(Promise.resolve("hello"));

stub.rejects(new Error("oh noes!"));
//is the same as
stub.returns(Promise.reject(new Error("oh noes!"));
Medium Feature Request Help wanted

Commentaire le plus utile

Puis-je faire un sinon.stub().returnsArg(1) où le talon renvoie une promesse? J'essaie simplement de renvoyer l'argument comme la résolution de ma promesse. Cela ne semble pas fonctionner.

Tous les 13 commentaires

Ce serait du bon sucre, merci pour la suggestion @mariusGundersen

Notre équipe a une petite bibliothèque sur npm qui nous a aidés avec ce genre de chose - https://github.com/substantial/sinon-stub-promise - bien que la façon dont elle est actuellement implémentée nécessite une syntaxe stub comme: sinon.stub().returnsPromise() . Pensées? Il semble d'après l'exemple ci-dessus que cela suppose une évaluation synchrone, non?

J'aime beaucoup la suggestion de @mariusGundersen . Autant que je sache, toutes les bibliothèques de promesse sont asynchrones tout le temps, non? Si tel est le cas, je pense que la promesse de talon devrait refléter ce comportement.

J'ai juste pensé qu'il utiliserait le Promise.resolve disponible dans le monde entier, s'il en existe un, et sinon cela ne fonctionnerait pas. Mais le laisser renvoyer un objet avec une méthode then est une bien meilleure solution:

var stub = sinon.stub(); 
stub.resolves("hello"); 
//is the same as 
stub.returns({then: x => setTimeout(()  => x("hello"), 0)}); 
stub.rejects(new Error("oh noes!")); 
//is the same as 
stub.returns({then: x => undefined, catch: x => setTimeout(() => x(new Error("oh noes!")), 0)});

(écrit sur le téléphone, peut contenir des erreurs)

Notre équipe a écrit une petite bibliothèque pour fournir des fonctionnalités similaires. Peut-être que cela aidera. Il utilise la bibliothèque bluebird pour les promesses. https://www.npmjs.com/package/sinon-bluebird

+1 pour le support natif de Promise

Il y a aussi un projet appelé sinon, comme promis qui patches votre projet du module existant à l' aide sinon -promesse native seulement d'ajouter / Rejects sémantique résout les à talons.

Ce serait un atout si ceci ou les changements de l'un des autres modules pouvaient être ajoutés à sinon lui-même.

Puis-je faire un sinon.stub().returnsArg(1) où le talon renvoie une promesse? J'essaie simplement de renvoyer l'argument comme la résolution de ma promesse. Cela ne semble pas fonctionner.

Les questions sur l'utilisation de

stub = (arg) => Promise.resolve(arg);

Idem d'ici: # 738

Bonjour à tous, tout d'abord, merci pour l'excellent travail que vous avez fait sur Sinon.
Si vous souhaitez que cela soit implémenté, j'aimerais aussi essayer, faites-le moi savoir et je commencerai à travailler dans un PR pour cela.

@lucasfcosta , merci pour cela. Je pense que @mroderick a parlé il y a longtemps de la simple intégration de sinon-as-promised dans Sinon, n'est-ce pas? Ce serait la solution la plus simple et je n'ai aucune objection.

@lucasfcosta J'adorerais voir un PR pour intégrer sinon-as-promised dans la branche master Autre

Cette page vous a été utile?
0 / 5 - 0 notes