2015-01-17 2 views
0

Я новичок в QUnit (один день) и все еще учится ..nodejs + QUnit: сохранение возвращенного исключения в тесте

Я хотел бы, чтобы сохранить сообщение и StackTrace от исключения. Я не знаю, как это сделать.

В приведенном ниже коде копиями stacktrace и сообщений являются местами в переменных. Я предполагаю, что область разная.

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 
); 

});

ответ

0

Требуется немного переосмыслить .. Механизм исключений quinit немного рудиментарен для моих нужд. Это решение, к которому я вернусь, - это начальный тестовый код, прежде чем перейти к qunit.

Существует один недостаток, QUnit сбросит трассировку, если:

QUnit.config.notrycatch = истина;

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); 
}); 
0

Это зависит от того, как вы хотите сохранить результаты. Если вы хотите вывести ошибки и stacktraces в файл, вы можете использовать api-узел fs api в списке, чтобы сохранить ваши результаты в хорошо отформатированном файле.

fs.writeFile(...); 

Кроме того, существует модуль, который интегрируется с qunit and node, что позволяет выводить ваш результат в файл XML.

+0

Да, но его не помещается в любом протоколе испытаний QUnit. Я сделал то, как достичь цели. – garyM

Смежные вопросы