2015-05-28 21 views
6

W JUnit (Java) wynikiem testu jednostkowego jest sukces, awaria lub błąd.Test mokki nie powiedzie się z AssertionError

Kiedy próbuję uruchomić test z Mocha, albo dostaję błąd sukcesu lub potwierdzenia.

Czy zwykle ma miejsce test AssertionError na testy niepowodzenia? (Nie powinno to być po prostu nazywa się awaria i nie błąd?)

AssertionError: -1 == 2 + spodziewać - rzeczywista

Co o testowaniu kodu asynchronicznego? Kiedy moje testy zawiodą, dostaję Uncaught eror? Czy to normalne?

Jak to:

Uncaught Błąd: oczekiwano 200 równa 201

Odpowiedz

10

co opisujesz jest normalne zachowanie dla Mocha. Kod ten ilustruje, co się dzieje, jeśli nie starają się wyjątki pułapki w kodzie asynchronicznym (nawet podniesione przez awarie asercjami) i co można zrobić, jeśli chcesz uniknąć nieprzechwycony wiadomość wyjątek:

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); 
}); 

Powyższy kod produkuje ten wyjście:

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

Masz całkowitą rację! Chciałbym tylko zauważyć, że Mocha działa z biblioteką asercji przez niepowodzenie ich podczas zgłaszania wyjątku (nie wiedziałem o tym). – user3452075

Powiązane problemy