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