2015-05-28 65 views
6

在JUnit(Java)中,单元测试的结果可能是成功,失败或错误。摩卡测试失败并显示AssertionError

当我尝试用摩卡运行测试时,我得到一个成功或断言错误。

通常是因为失败测试而得到一个AssertionError? (不应该只是被称作失败,而不是一个错误?)

Asse田:-1 == 2 +预期 - 实际

有关测试异步代码是什么?当我的测试失败时,我得到一个Uncaught eror?这是正常的吗?

像这样:

未捕获的错误:预期的200等于201

回答

10

你所描述的是摩卡的正常行为。此代码说明,如果你不尝试在异步代码(甚至断言失败引发),以及如果你想避免未捕获的异常消息,你可以做捕获异常会发生什么:

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

上面的代码生成此输出:

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

你是完全正确的! 我只是想说Mocha使用断言库时通过失败它们来引发异常(我没有意识到这一点)。 – user3452075