Ich habe eine Klasse, die ein Versprechen ablehnt:
%Vor%In meinem Test:
%Vor%Wenn der Test jedoch bestanden wird, wird der Fehler an die Konsole gesendet.
Unbehandelte Ablehnung Fehler: Boo ...
Bei nicht versprechenswerten Fehlern habe ich bind verwendet, um zu verhindern, dass der Fehler ausgelöst wird, bis Chai umbrechen und testen konnte:
%Vor%Dies funktioniert jedoch nicht und gibt Folgendes zurück:
Typfehler: [Function] is not a thenable.
Was ist der richtige Weg, um dies zu testen?
(Haftungsausschluss: Dies ist eine gute Frage auch für Leute, die Bluebird nicht verwenden. Ich habe eine ähnliche Antwort hier ; diese Antwort wird für Leute funktionieren, die Bluebird nicht benutzen.)
So können Sie chai-as-hosored verwenden, um sowohl resolve
als auch reject
cases für ein Versprechen zu testen:
Sie können dasselbe ohne Chai-as-versprochen wie folgt erreichen:
%Vor%Ich persönlich benutze dieses Idiom:
%Vor% Dies ist einer der seltenen Fälle, in denen then(onFulfilled, onRejected)
(2 Argumente) zulässig ist.
Wenn Sie .then(reject).catch(onRejected)
wie in anderen Antworten vorgeschlagen verketten, geben Sie jedes Mal den catch
-Handler ein , da auch die im vorhergehenden then
-Handler erzeugte Zurückweisung abgefangen wird - was zu immergrünen Tests führen kann, wenn Sie nicht vorsichtig genug sind, um diese Möglichkeit zu prüfen.
Ich habe das gleiche Problem gehabt, aber bei vielen Hacks habe ich eine Lösung gefunden, um abgelehnte Versprechen im Mocha zu testen.
Schreibe den Mokka-Code wie folgt
%Vor%HINWEIS: - Ich hoffe, Sie finden es nützlich. Wenn Sie einen anderen Ideenvorschlag haben, kommentieren Sie mich, ich bin der Neuling, der die js Welt erforscht
Tags und Links javascript promise mocha bluebird chai-as-promised