assert.throws()

追加されたバージョン: 1.0.0.

説明

throws( blockFn, message = "" )
throws( blockFn, expectedMatcher, message = "" )

コールバックで例外がスローされるかどうかをテストし、スローされたエラーを比較します。

名前 説明
blockFn (関数) 実行する関数
expectedMatcher エラーの想定する照合
message (文字列) アサーションの簡単な説明

特定の状況に基づいて例外がスローされると予想されるコードをテストする場合、assert.throws()を使用して、テストと比較するためのエラーオブジェクトをキャッチします。

expectedMatcher引数は以下のとおりです

  • エラーオブジェクト
  • ala errorValue instanceof expectedMatcherを使用するErrorコンストラクタ
  • 文字列表現と一致する(または部分的に一致する)正規表現
  • アサーションチェックに合格するためにtrueを返す必要があるコールバック関数

一部の環境(Closure Compilerなど)で、throwsによってエラーが発生することがあります。その場合はassert.raises()を使用できます。名前が異なるだけで、シグネチャと動作は同じです。

変更ログ

QUnit 2.12 expectedMatcherコールバック関数として矢印関数に対するサポートを追加
QUnit 1.9 assert.raises()の名前はassert.throws()に変更されました
assert.raises()メソッドはエイリアスとして引き続きサポートされています

QUnit.test('throws example', assert => {
  // simple check
  assert.throws(function () {
    throw new Error('boo');
  });

  // simple check
  assert.throws(
    function () {
      throw new Error('boo');
    },
    'optional description here'
  );

  // match pattern on actual error
  assert.throws(
    function () {
      throw new Error('some error');
    },
    /some error/,
    'optional description here'
  );

  // using a custom error constructor
  function CustomError (message) {
    this.message = message;
  }
  CustomError.prototype.toString = function () {
    return this.message;
  };

  // actual error is an instance of the expected constructor
  assert.throws(
    function () {
      throw new CustomError('some error');
    },
    CustomError
  );

  // actual error has strictly equal `constructor`, `name` and `message` properties
  // of the expected error object
  assert.throws(
    function () {
      throw new CustomError('some error');
    },
    new CustomError('some error')
  );

  // custom validation arrow function
  assert.throws(
    function () {
      throw new CustomError('some error');
    },
    (err) => err.toString() === 'some error'
  );

  // custom validation function
  assert.throws(
    function () {
      throw new CustomError('some error');
    },
    function (err) {
      return err.toString() === 'some error';
    }
  );
});