web-dev-qa-db-ja.com

MochaテストがAssertionErrorで失敗する

JUnit(Java)では、単体テストの結果は成功、失敗、またはエラーのいずれかです。

Mochaでテストを実行しようとすると、成功またはアサーションエラーが発生します。

通常、失敗テストでAssertionErrorが発生しますか? (エラーではなく、単に失敗と呼ばれるべきではありませんか?)

AssertionError:-1 == 2 +期待される-実際

非同期コードのテストはどうですか?テストが失敗すると、キャッチされていないエラーが発生しますか?それは正常ですか?

このような:

キャッチされないエラー:200が201に等しいと予想されます

11
user3452075

あなたが説明しているのは、モカの通常の動作です。このコードは、非同期コードで例外をトラップしようとしない場合(アサーションの失敗によって発生した場合でも)に何が起こるか、およびキャッチされない例外メッセージを回避したい場合に何ができるかを示しています。

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)
17
Louis