2015-11-17 6 views

Antwort

16

Es gibt viele Möglichkeiten zu fälschen einen Fehler - wie die assert.fail() von @DmytroShevchenko erwähnt -, aber in der Regel ist es möglich, diese Krücken und drücken die Absicht des Tests zu vermeiden, Ein besserer Weg, der zu aussagekräftigeren Nachrichten führt, wenn die Tests fehlschlagen.

Zum Beispiel, wenn Sie eine Ausnahme geworfen werden erwarten, sagen, warum nicht so direkt:

expect(function() { 
    // do stuff here which you expect to throw an exception 
}).to.throw(Error); 

Wie Sie sehen, wenn Ausnahmen zu testen, müssen Sie Ihren Code in einer anonymen Funktion wickeln.

Natürlich können Sie den Test verfeinern, indem Sie nach einem spezifischeren Fehlertyp, einer erwarteten Fehlermeldung usw. suchen. Weitere Informationen finden Sie unter .throw in der Chai docs.

+2

Ich stimme völlig zu, dass das, was Sie skizziert haben, ein besserer Ansatz ist. –

37

Es gibt assert.fail(). Sie können es wie folgt verwenden:

assert.fail(0, 1, 'Exception not thrown'); 
+2

... und deine Antwort ist die richtige für den Fall, dass es keine andere Option gibt, also bekommst du auch meinen upvote :) – hashchange

+0

@hashchange Es gibt ein gutes Beispiel, wo du das anstelle von "to.throw" und verwenden würdest das ist in dem Fall, wo Sie Fehler in Objektkonstruktoren werfen könnten. – Mayhem93

+4

Es gibt auch eine [** 'expect.fail()' **] (http://chaijs.com/api/bdd/#method_fail) – randominstanceOfLivingThing

Verwandte Themen