QUnit - 测试异常消息?

10

QUnit提供了"raise"断言来测试是否抛出异常。但是,有没有办法测试异常抛出的实际消息呢?例如,假设我有以下函数:

throwError = function(arg) {
  var err = new Error();
  if (typeof arg === 'undefined') {
    err.message = 'missing parameter';
    throw err;
  }
}

我想能够写出这样的内容:

raises(
  function(){throwError();},
  Error.message,
  'missing arg'
);
理想情况下,这个测试应该失败,因为异常消息是“缺少参数”,而我期望它是“缺少arg”,但是它通过了,因为qunit只检查是否引发了错误。有没有办法检查所抛出异常的实际内容?

QUnit的throws不是已经做到了吗? - Tim Büthe
"throws" 能够工作,但是由于某些原因,它无法验证异常信息。 - Guilherme Garnier
1个回答

18

我找到了答案,为了方便其他人,我在这里发布。给定这个函数:

throwError = function(arg) {
  var err = new Error();
  if (typeof arg === 'undefined') {
    err.message = 'missing parameter';
    throw err;
  }
}

测试将会是这样的:

raises(
  function(){
    throwError();
  },
  function(err) {
    return err.message === 'missing arg';
  },
  'optional - label for output here'
);

是的,就我所知,我独立发现了这个——它是一个未记录的功能。 - Jonathan Benn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接