2015-05-28 17 views
6

In JUnit (Java) il risultato di un test unitario è un successo, un errore o un errore.Test del mocha non riuscito con errore di asserzione

Quando si tenta di eseguire un test con Mocha, si ottiene un errore di conferma o di asserzione.

È normalmente necessario ottenere un AssertionError per i test di errore? (Non dovrebbe semplicemente essere chiamato un fallimento e non un errore?)

AssertionError: -1 == 2 + attesi - attuale

Che dire di testare codice asincrono? Quando i miei test falliscono, ottengo un erotismo Uncaught? È normale?

Ti piace questa:

errore non rilevato: attesi 200 per eguagliare 201

risposta

10

cosa si sta descrivendo è il comportamento normale per Mocha. Questo codice illustra cosa succede se non si tenta di intercettare eccezioni nel codice asincrono (anche sollevato da errori di asserzione) e cosa si può fare se si vuole evitare il messaggio di eccezione non rilevata:

var assert = require("assert"); 

it("fails with uncaught exception", function (done) { 
    setTimeout(function() { 
     assert.equal(1, 2); 
     done(); 
    }, 1000); 
}); 

it("fails with assertion error", function (done) { 
    setTimeout(function() { 
     try { 
      assert.equal(1, 2); 
      done(); 
     } 
     catch (e) { 
      done(e); 
     } 
    }, 1000); 
}); 

Il codice di cui sopra produce questo output:

1) fails 
    2) fails 

    0 passing (2s) 
    2 failing 

    1) fails: 
    Uncaught AssertionError: 1 == 2 
     at null._onTimeout (/tmp/t2/test.js:5:16) 
     at Timer.listOnTimeout [as ontimeout] (timers.js:112:15) 

    2) fails: 
    AssertionError: 1 == 2 
     at null._onTimeout (/tmp/t2/test.js:13:20) 
     at Timer.listOnTimeout [as ontimeout] (timers.js:112:15) 
+0

Hai completamente ragione! Voglio solo sottolineare che Mocha lavora con la libreria di asserzioni fallendo quando viene sollevata un'eccezione (non ne ero a conoscenza). – user3452075

Problemi correlati