nodejs + qunit:在测试中保存返回的异常
nodejs + qunit: saving returned exception in test
我是 qunit 的新手(一天)并且还在学习中..
我想保存来自异常的消息和堆栈跟踪。我不知道该怎么做。
在下面的代码中,堆栈跟踪和消息的副本放在变量中。我假设范围不同。
QUnit.test("Internal scheme validator - destination list - empty - no strict", function(assert) {
var path ='[{"sid":"test_scheme0","ssch":"","dstli":""}]';
var pathi = JSON.parse(path);
var expected = 'undefined scheme destination list';
var err;
var enm;
var emsg;
var estk;
assert.throws(
function(){
"use strict";
sysCatalog.__vschi__(pathi,"SchemeTest Ignore Message" );
},
function(e){
err= JSON.parse(JSON.stringify(e));
enm= JSON.parse(JSON.stringify(e.name));
emsg = JSON.parse(JSON.stringify(e.message));
estk = JSON.parse(JSON.stringify(e.stack));
return emsg === expected;
},
'Wrong exception message returned.\nExpected: '+ expected+'\nActual: '+ emsg +'\nBacktrace:\n'+estk
);
});
这取决于您希望如何保存结果。如果你想将错误和堆栈跟踪输出到一个文件,那么你可以使用节点中的 fs api 将你的结果保存到一个格式良好的文件中。
fs.writeFile(...);
此外,还有一个与 qunit and node 集成的模块,可让您将结果输出到 XML 文件。
重新考虑了一下。quinit 异常机制对我的需求来说有点简陋。这是我恢复到的解决方案,它是在移动到 qunit 之前开始的测试代码。
有一个缺点,如果出现以下情况,qunit 将转储回溯:
QUnit.config.notrycatch = true;
QUnit.test("Internal scheme validator - destination list - empty - strict", function(assert) {
var path ='[{"sid":"test_scheme0","ssch":"","dstli":""}]';
var pathi = JSON.parse(path);
var expected = 'zero length scheme destination list';
var enm;
var emsg;
var estk;
try{
sysCatalog.__vschi__(pathi,"SchemeTest Ignore Message",true );
}catch(e){
// here the test failed and we should not proceed
//cc=false;
enm= e.name;
emsg = e.message;
estk = e.stack;
}
assert.strictEqual(emsg,expected, 'Wrong exception message returned.\nBacktrace:\n'+estk);
});
我是 qunit 的新手(一天)并且还在学习中..
我想保存来自异常的消息和堆栈跟踪。我不知道该怎么做。
在下面的代码中,堆栈跟踪和消息的副本放在变量中。我假设范围不同。
QUnit.test("Internal scheme validator - destination list - empty - no strict", function(assert) {
var path ='[{"sid":"test_scheme0","ssch":"","dstli":""}]';
var pathi = JSON.parse(path);
var expected = 'undefined scheme destination list';
var err;
var enm;
var emsg;
var estk;
assert.throws(
function(){
"use strict";
sysCatalog.__vschi__(pathi,"SchemeTest Ignore Message" );
},
function(e){
err= JSON.parse(JSON.stringify(e));
enm= JSON.parse(JSON.stringify(e.name));
emsg = JSON.parse(JSON.stringify(e.message));
estk = JSON.parse(JSON.stringify(e.stack));
return emsg === expected;
},
'Wrong exception message returned.\nExpected: '+ expected+'\nActual: '+ emsg +'\nBacktrace:\n'+estk
);
});
这取决于您希望如何保存结果。如果你想将错误和堆栈跟踪输出到一个文件,那么你可以使用节点中的 fs api 将你的结果保存到一个格式良好的文件中。
fs.writeFile(...);
此外,还有一个与 qunit and node 集成的模块,可让您将结果输出到 XML 文件。
重新考虑了一下。quinit 异常机制对我的需求来说有点简陋。这是我恢复到的解决方案,它是在移动到 qunit 之前开始的测试代码。
有一个缺点,如果出现以下情况,qunit 将转储回溯:
QUnit.config.notrycatch = true;
QUnit.test("Internal scheme validator - destination list - empty - strict", function(assert) {
var path ='[{"sid":"test_scheme0","ssch":"","dstli":""}]';
var pathi = JSON.parse(path);
var expected = 'zero length scheme destination list';
var enm;
var emsg;
var estk;
try{
sysCatalog.__vschi__(pathi,"SchemeTest Ignore Message",true );
}catch(e){
// here the test failed and we should not proceed
//cc=false;
enm= e.name;
emsg = e.message;
estk = e.stack;
}
assert.strictEqual(emsg,expected, 'Wrong exception message returned.\nBacktrace:\n'+estk);
});