【发布时间】:2011-10-02 11:59:19
【问题描述】:
鉴于此代码:
var assert = require('assert');
function boom(){
throw new Error('BOOM');
}
assert.throws( boom(), Error );
我得到这个输出,节点为 0.4.9:
node.js:134
throw e; // process.nextTick error, or 'error' event on first tick
^
Error: BOOM
at boom ([EDITED]/assert.throws.test.js:4:9)
at Object.<anonymous> ([EDITED]/assert.throws.test.js:7:17)
at Module._compile (module.js:402:26)
at Object..js (module.js:408:10)
at Module.load (module.js:334:31)
at Function._load (module.js:293:12)
at Array.<anonymous> (module.js:421:10)
at EventEmitter._tickCallback (node.js:126:26)
对我来说,这意味着发生了未捕获的异常,而不是报告的已捕获异常。查看文档,我注意到示例看起来更像这样:
var assert = require('assert');
function boom(){
throw new Error('BOOM');
}
assert.throws( boom, Error );
但是如何测试它是否在给定特定输入的情况下引发异常?例如:
var assert = require('assert');
function boom(blowup){
if(blowup)
throw new Error('BOOM');
}
assert.throws( boom, Error );
这将失败。我做错了什么,或者除了我之外每个人都知道什么秘密?
【问题讨论】:
标签: unit-testing node.js