qunit - 测试异常消息?

Phi*_*ger 10 javascript tdd unit-testing exception-handling qunit

因此,QUnit提供"raise"断言来测试是否抛出异常.有没有办法测试异常引发的实际消息?例如,假设我有这个功能:

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

我希望能够按照以下方式写一些东西:

raises(
  function(){throwError();},
  Error.message,
  'missing arg'
);
Run Code Online (Sandbox Code Playgroud)

理想情况下,此测试将失败,因为异常消息是"缺少参数",我希望它"缺少arg",但它通过,因为qunit只检查是否引发了错误.有什么方法可以检查抛出异常的实际内容?

Phi*_*ger 18

我找到了答案,发布在这里以防其他人发现它有用.鉴于此功能:

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

测试看起来像这样:

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