Javascript 正确使用QUnit throw()断言?

Javascript 正确使用QUnit throw()断言?,javascript,qunit,Javascript,Qunit,使用QUinit的断言,我想测试是否抛出了错误以及错误消息。我有以下功能: /** * Error function for Node. * @param {String} msg Error message. */ function NodeError (msg) { var that = this /** * Attribute for message. * @type {String} */ this.msg = msg /** * Fun

使用QUinit的断言,我想测试是否抛出了错误以及错误消息。我有以下功能:

/**
 * Error function for Node.
 * @param {String} msg Error message.
 */
function NodeError (msg) {
  var that = this

  /**
   * Attribute for message.
   * @type {String}
   */
  this.msg = msg

  /**
   * Function rendering NodeError as a string.
   * @return {String} String representation of NodeError.
   */
  this.toString = function () {
    return that.msg
  }
}

/**
 * Node object. TODO Fill out.
 * @param {String} title Node title.
 * @throws {NodeError} If no title given
 */
function Node (title) {
  var that = this

  if (!title) {
    throw new Error('Error: no title given')
  }

  /**
   * Node title
   * @type {[type]}
   */
  this.title = title
}
以及以下
QUnit
测试:

QUnit.test('new Node w/o title throws error', function (assert) {
  assert.expect(1) // Expected number of assertions

  assert.throws(
    function () { new Node() },
    function (err) { err.toString() === 'Error: no title given' },
    'Error thrown'
  )
})
但是,单元测试未能给出以下结果:

Error thrown@ 0 ms
Expected:   
function( a ){
  [code]
}
Result:     
Error("Error: no title given")
Diff:   
function( a ){
  [code]
}Error("Error: no title given")
Source:     
    at Object.<anonymous> (file:///Users/maasha/install/src/protwiz/test/test_pw_node.js:10:10)
在0毫秒时引发错误
预期:
职能(a){
[守则]
}
结果:
错误(“错误:未给出标题”)
差异:
职能(a){
[守则]
}错误(“错误:未给出标题”)
资料来源:
反对。(file:///Users/maasha/install/src/protwiz/test/test_pw_node.js:10:10)

怎么办?

传递给
assert.throws的第二个函数应该
返回一些东西。您当前有一条计算结果为布尔值的语句,但结果将被丢弃。然后是函数

此外,您正在抛出
新错误(…)
,而不是
节点错误。您要么需要更改,要么只使用
err.message

这里有一个固定版本:

函数节点错误(msg){
var=这个;
this.msg=msg;
this.toString=函数(){
返回该.msg;
}
}
功能节点(标题){
var=这个;
如果(!标题){

抛出新的NodeError('错误:没有给出标题');//谢谢,你是我的宝贝!