Testen fehlgeschlagener Versprechen mit Mochas eingebauter Versprechensunterstützung [duplizieren]

8

Wie soll ich mit Mokka und Chai testen, dass mein Versprechen gescheitert ist?

Ich bin verwirrt, weil ich zuerst dachte, ich sollte "Mocha-wie-versprochen" verwenden, aber das Paket ist jetzt veraltet (ich benutze Mocha 2.1.0), mit dem Hinweis zu Verwenden Sie einfach den Versprechenstest, der jetzt in Mokka integriert ist. siehe: Ссылка

Ein anderer Beitrag empfiehlt, das 'done' Argument zu entfernen es () Callback - nicht sicher, ich verstehe warum, seit meinem Verständnis, dass das Übergeben des "Done" -Parameters war der Weg zu signalisieren, dass ein Test war asynchron getestet werden. siehe: Wie überprüfe ich Versprechen mit Mokka und Chai richtig? ?

Wie auch immer, ich habe versucht, mein Problem auf den untenstehenden Code zu reduzieren - bitte hilf mir, dies zu ändern, damit ich testen kann, ob mein Versprechen tatsächlich fehlschlägt.

%Vor%     
RoyM 24.02.2015, 19:41
quelle

3 Antworten

10

Etwas mehr graben, und es scheint der richtige Weg zu sein, einen zusätzlichen catch-Block hinzuzufügen, so ...

%Vor%

Ich bin an alternativen Ideen oder der Bestätigung interessiert, dass dies in Ordnung ist, wie es ist .. danke.

UPDATE:

Ben - Ich grabe jetzt, was Sie sagten, esp. nach dem knappen, aber hilfreichen Kommentar von Benjamin G.

Zusammenfassend:

Wenn Sie einen done -Parameter übergeben, wird erwartet, dass der Test seine 'done-ness' auslöst, indem er die Funktion done() aufruft;

Wenn Sie den Parameter done nicht übergeben, funktioniert das normalerweise nur für synchrone Aufrufe. Jedoch, Wenn Sie eine Zusage zurückgeben, fängt das Mocha-Framework (mocha & gt; 1.18) alle Fehler auf, die normalerweise verschluckt wurden (laut Spezifikation der Versprechen). Hier ist eine aktualisierte Version:

%Vor%     
RoyM 24.02.2015 22:03
quelle
3

Sie können ein Versprechen zurückgeben, um zu signalisieren, dass der Test asynchron ist:

%Vor%     
Ben 24.02.2015 21:42
quelle
1

chai-as-promised bietet ein sauberes Test-Framework für Promises:

%Vor%

In Ihrer Testdatei:

%Vor%

Das fühlt sich sauber und intuitiv an. Aber Sie können etwas Ähnliches ohne chai-wie-versprochen wie folgt erreichen:

%Vor%     
fearless_fool 14.05.2016 03:55
quelle

Tags und Links