Javascript 正确使用QUnit throw()断言?
使用QUinit的断言,我想测试是否抛出了错误以及错误消息。我有以下功能: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
/**
* 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('错误:没有给出标题');//谢谢,你是我的宝贝!