2015-11-17 9 views

risposta

16

Ci sono molti modi di falsificare un fallimento - come la assert.fail() citato da @DmytroShevchenko -, ma di solito, è possibile evitare queste stampelle ed esprimere l'intento del test in un modo migliore, che porterà a messaggi più significativi se i test falliscono.

Per esempio, se si prevede un'eccezione da buttare, perché non dirlo direttamente:

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

Come si può vedere, quando si prova eccezioni, si deve avvolgere il codice in una funzione anonima.

Ovviamente, è possibile perfezionare il test controllando un tipo di errore più specifico, un messaggio di errore previsto ecc. Vedere .throw nel numero Chai docs per ulteriori informazioni.

+2

Sono completamente d'accordo sul fatto che quello che hai delineato è un approccio migliore. –

37

C'è assert.fail(). Si può usare in questo modo:

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

... e la vostra risposta è quella giusta nel caso in cui non v'è alcuna altra opzione, in modo da ottenere la mia upvote, troppo :) – hashchange

+0

@hashchange C'è un buon esempio in cui si usa che invece di "to.throw" e è nel caso in cui potresti lanciare errori nei costruttori di oggetti. – Mayhem93

+4

C'è anche un [** 'expect.fail()' **] (http://chaijs.com/api/bdd/#method_fail) – randominstanceOfLivingThing