Dies ist eine sehr einfache Syntax Zucker:
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!"));
Das wäre ein schöner Zucker, danke für den Vorschlag @mariusGundersen
Unser Team hat eine kleine Bibliothek auf npm, die uns bei solchen Dingen geholfen hat - https://github.com/substantial/sinon-stub-promise - obwohl die derzeitige Implementierung eine Stub-Syntax wie: sinon.stub().returnsPromise()
erfordert
Ich mag den Vorschlag von
Ich dachte nur, es würde das global verfügbare Promise.resolve
, falls eines existiert, und wenn nicht, würde es nicht funktionieren. Es ist jedoch eine viel bessere Lösung, ein Objekt mit einer then
-Methode zurückgeben zu lassen:
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)});
(am Telefon geschrieben, könnte Fehler haben)
Unser Team hat eine kleine Bibliothek geschrieben, um ähnliche Funktionen bereitzustellen. Vielleicht hilft das. Es nutzt die Bluebird-Bibliothek für Versprechen. https://www.npmjs.com/package/sinon-bluebird
+1 für native Promise-Unterstützung
Es gibt auch ein Projekt namens Sinon-as-versprochen , welche Patches Ihr Projekt bestehenden sinon Modul mutter Versprechen nur Entschlüssen / Spuck Semantik zu Stubs hinzuzufügen.
Es wäre ein Ass, wenn dieses oder die Änderungen von einem der anderen Module zu sinon selbst hinzugefügt werden könnten.
Kann ich ein sinon.stub().returnsArg(1)
bei dem der Stub ein Versprechen zurückgibt? Ich versuche nur, das Argument als Entschlossenheit meines Versprechens zurückzugeben. Scheint nicht zu funktionieren.
@ jnystrom Verwendungsfragen gehören auf die Mailingliste, aber dies wird derzeit von sinon nicht als syntaktischer Zucker unterstützt. Vielleicht könnten Sie eine Syntax vorschlagen? So etwas sollte tun, was Sie wollen, und Sie brauchen kein Sinon dafür.
stub = (arg) => Promise.resolve(arg);
Gleich von hier: # 738
Hallo allerseits, zunächst einmal vielen Dank für die hervorragende Arbeit, die ihr an Sinon geleistet habt.
Wenn Sie dies implementieren möchten, würde ich es auch gerne ausprobieren. Lassen Sie es mich einfach wissen und ich werde dafür bei einer PR arbeiten.
@ Lucasfcosta , danke dafür. Ich denke, @mroderick hat vor langer Zeit darüber gesprochen, nur sinon-as-promised
in Sinon zu integrieren, war das nicht so? Das wäre die einfachste Lösung, und ich habe keine Einwände.
@lucasfcosta Ich würde gerne eine PR sehen, um sinon-as-promised
in Sinons master
-Zweig zu integrieren
Hilfreichster Kommentar
Kann ich ein
sinon.stub().returnsArg(1)
bei dem der Stub ein Versprechen zurückgibt? Ich versuche nur, das Argument als Entschlossenheit meines Versprechens zurückzugeben. Scheint nicht zu funktionieren.