Mer*_*erc 8 unit-testing mongodb node.js nodeunit
使用NodeUnit的一个要点是编写新函数并经常测试它们.问题是,如果其中一个测试函数抛出错误(包括JS运行时错误),则不会向用户显示错误.这是最简单的测试用例:(注意abcd会导致运行时错误)
exports.all = {
one: function( test ){
test.done();
},
two: function( test ){
as( function( err, res ){
test.done();
});
},
}
function as( callback ){
process.nextTick( function() {
a = testMe();
callback( null, a );
});
}
function testMe(){
a.b.c.d.e = 100;
return 10;
}
Run Code Online (Sandbox Code Playgroud)
但是,testMe()可能是我正在开发的新功能.一个未初始化的变量,或任何东西,只会沉默.
Joh*_*yHK 13
通过以下uncaughtException事件将您自己未捕获的异常处理添加到测试文件中:
process.on('uncaughtException', function(err) {
console.error(err.stack);
});
Run Code Online (Sandbox Code Playgroud)
或者通过创建域并添加process它(或者您的测试使用的任何事件发射器),以便您可以捕获在使用中发生的错误process.nextTick:
var dom = require('domain').create();
dom.add(process);
dom.on('error', function(err) {
console.error(err.stack);
});
Run Code Online (Sandbox Code Playgroud)
无论哪种方式,您将获得如下控制台输出:
ReferenceError: a is not defined
at testMe (/home/test/test.js:24:3)
at /home/test/test.js:18:9
at process._tickDomainCallback (node.js:459:13)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
871 次 |
| 最近记录: |