assert.throws()

添加的版本:1.0.0

说明

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

测试回调是否抛出异常,并可选择比较抛出的错误。

名字 说明
blockFn(函数) 要执行的函数
expectedMatcher 预期的错误匹配器
message(字符串) 断言的简短说明

在测试预期会根据一组特定情况引发异常的代码时,请使用 assert.throws() 捕获错误对象以进行测试和比较。

expectedMatcher 参数可以是:

  • 错误对象
  • 使用 ala errorValue instanceof expectedMatcher 的错误构造函数
  • 匹配(或部分匹配)字符串表示的 RegExp
  • 必须返回 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';
    }
  );
});