Sinon: Stubs sollten ein "Resolves" und ein "Rejects" haben, um Versprechen zu setzen

Erstellt am 8. Aug. 2015  ·  13Kommentare  ·  Quelle: sinonjs/sinon

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!"));
Medium Feature Request Help wanted

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.

Alle 13 Kommentare

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

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen