node-qunit的測試結果如何顯示到瀏覽器中(2)

上回得到的report但實際上只是一個摘要,不夠詳細:

 

{"files":1,"assertions":26,"failed":3,"passed":23,"runtime":463,"tests":12,"coverage":{"files":1,"statements":{"covered":106,"total":106},"branches":{"covered":22,"total":24},"functions":{"covered":16,"total":16},"lines":{"covered":104,"total":104}}}

 

如何得到詳細測試結果呢?翻看log.js,發現全局變量data是我們需要的:

 

var Table = require('cli-table');

var data,
    log = console.log,
    fileColWidth = 50;

data = {
    assertions: [],
    tests: [],
    summaries: [],
    coverages: []
};

但是它沒有export出來,於是修改log.js,export這個變量:

 

 

exports.data=data; //add by wxh,2014/3/29

於是model層就可以寫成:

 

 

module.exports = function(req, res, sender) {
	var testrunner = require("qunit");
	
	testrunner.run({
		code : "./source/yjSecurity.js",
		tests : "./test/Test_yjSecurity.js"
	}, function(err, report) {
		//console.dir(testrunner.log.data);
		if (err)
			sender.error(err);
		else {
			sender.success(testrunner.log.data);
		}
	});
};

ok,得到了詳細的測試結果:

 

{"assertions":[{"result":true,"test":"toString(16)","module":"yjSecurity"},{"result":true,"actual":"6D93","expected":"6D93","test":"toString(16)","module":"yjSecurity"},{"result":true,"actual":"4E2D","expected":"4E2D","test":"toString(16)","module":"yjSecurity"},{"result":true,"actual":67,"expected":67,"test":"charCodeAt","module":"yjSecurity"},{"result":true,"actual":20013,"expected":20013,"test":"charCodeAt","module":"yjSecurity"},{"result":true,"actual":4,"expected":4,"test":"charCodeAt","module":"yjSecurity"},{"result":true,"actual":3,"expected":3,"test":"ansiStr2ByteArray/byteArray2AnsiStr","module":"yjSecurity"},{"result":true,"actual":"wxh","expected":"wxh","test":"ansiStr2ByteArray/byteArray2AnsiStr","module":"yjSecurity"},{"result":true,"actual":"wxh","expected":"wxh","test":"encryptStr0_Ansi/decryptStr0_Ansi","module":"yjSecurity"},{"result":true,"actual":"wxh1230#$?/*&^!","expected":"wxh1230#$?/*&^!","test":"encryptStr0_Ansi/decryptStr0_Ansi","module":"yjSecurity"},{"result":false,"message":"舊方法在處理包含ASCII 0或255的字串時,有bug,這個測試會失敗。","actual":"1ABCDGFA","expected":"1ABCDGFÿA","source":" at Object.s0 (D:\work\Source\WebPublic\Test\Test.yjSecurity.js\Node.js\test\Test_yjSecurity.js:47:2) at Object.Test.run (D:\Program Files\nodejs\npm-global\node_modules\qunit\support\qunit\qunit\qunit.js:136:18) at D:\Program Files\nodejs\npm-global\node_modules\qunit\support\qunit\qunit\qunit.js:279:10 at process (D:\Program Files\nodejs\npm-global\node_modules\qunit\support\qunit\qunit\qunit.js:1235:24) at null._onTimeout (D:\Program Files\nodejs\npm-global\node_modules\qunit\support\qunit\qunit\qunit.js:378:5) at Timer.listOnTimeout [as ontimeout] (timers.js:110:15)","test":"故意的失敗測試,encryptStr0_Ansi/decryptStr0_Ansi","module":"yjSecurity"},{"result":true,"actual":"wxÿh1230#$?/*&^!","expected":"wxÿh1230#$?/*&^!","test":"encryptStr_Ansi/decryptStr_Ansi","module":"yjSecurity"},{"result":false,"message":"只能處理Ansi單字節碼,不能處理中文。","actual":"wxÿh1230#hý$?/*&^!","expected":"wxÿh1230#周國$?/*&^!","source":" at Object. (D:\work\Source\WebPublic\Test\Test.yjSecurity.js\Node.js\test\Test_yjSecurity.js:61:2) at Object.Test.run (D:\Program Files\nodejs\npm-global\node_modules\qunit\support\qunit\qunit\qunit.js:136:18) at D:\Program Files\nodejs\npm-global\node_modules\qunit\support\qunit\qunit\qunit.js:279:10 at process (D:\Program Files\nodejs\npm-global\node_modules\qunit\support\qunit\qunit\qunit.js:1235:24) at null._onTimeout (D:\Program Files\nodejs\npm-global\node_modules\qunit\support\qunit\qunit\qunit.js:378:5) at Timer.listOnTimeout [as ontimeout] (timers.js:110:15)","test":"故意的失敗測試,encryptStr_Ansi/decryptStr_Ansi","module":"yjSecurity"},{"result":true,"actual":"065066067","expected":"065066067","test":"unicodeStr2ByteArray","module":"yjSecurity"},{"result":true,"actual":"1中國A","expected":"1中國A","test":"byteArray2UnicodeStr","module":"yjSecurity"},{"result":true,"actual":"","expected":"","test":"encryptStr0_Unicode/decryptStr0_Unicode","module":"yjSecurity"},{"result":true,"actual":"1中國A","expected":"1中國A","test":"encryptStr0_Unicode/decryptStr0_Unicode","module":"yjSecurity"},{"result":true,"actual":"123","expected":"123","test":"encryptStr0_Unicode/decryptStr0_Unicode","module":"yjSecurity"},{"result":true,"actual":"ABC","expected":"ABC","test":"encryptStr0_Unicode/decryptStr0_Unicode","module":"yjSecurity"},{"result":true,"actual":"ABC中國EFGشش.ذ.ش.و فال الخير لل中國","expected":"ABC中國EFGشش.ذ.ش.و فال الخير لل中國","test":"encryptStr0_Unicode/decryptStr0_Unicode","module":"yjSecurity"},{"result":false,"message":"舊方法在處理包含ASCII 0或255的字串時,有bug,這個測試會失敗。","actual":"1中國A","expected":"1中國ÿA","source":" at Object.s0 (D:\work\Source\WebPublic\Test\Test.yjSecurity.js\Node.js\test\Test_yjSecurity.js:89:2) at Object.Test.run (D:\Program Files\nodejs\npm-global\node_modules\qunit\support\qunit\qunit\qunit.js:136:18) at D:\Program Files\nodejs\npm-global\node_modules\qunit\support\qunit\qunit\qunit.js:279:10 at process (D:\Program Files\nodejs\npm-global\node_modules\qunit\support\qunit\qunit\qunit.js:1235:24) at null._onTimeout (D:\Program Files\nodejs\npm-global\node_modules\qunit\support\qunit\qunit\qunit.js:378:5) at Timer.listOnTimeout [as ontimeout] (timers.js:110:15)","test":"故意的失敗測試,encryptStr0_Unicode/decryptStr0_Unicode","module":"yjSecurity"},{"result":true,"actual":"","expected":"","test":"encryptStr_Unicode/decryptStr_Unicode","module":"yjSecurity"},{"result":true,"actual":"1中國ÿA","expected":"1中國ÿA","test":"encryptStr_Unicode/decryptStr_Unicode","module":"yjSecurity"},{"result":true,"actual":"123","expected":"123","test":"encryptStr_Unicode/decryptStr_Unicode","module":"yjSecurity"},{"result":true,"actual":"ABC","expected":"ABC","test":"encryptStr_Unicode/decryptStr_Unicode","module":"yjSecurity"},{"result":true,"actual":"ABC中國EFGشش.ذ.ش.و فال الخير لل中國","expected":"ABC中國EFGشش.ذ.ش.و فال الخير لل中國","test":"encryptStr_Unicode/decryptStr_Unicode","module":"yjSecurity"}],"tests":[{"name":"toString(16)","module":"yjSecurity","failed":0,"passed":3,"total":3},{"name":"charCodeAt","module":"yjSecurity","failed":0,"passed":3,"total":3},{"name":"ansiStr2ByteArray/byteArray2AnsiStr","module":"yjSecurity","failed":0,"passed":2,"total":2},{"name":"encryptStr0_Ansi/decryptStr0_Ansi","module":"yjSecurity","failed":0,"passed":2,"total":2},{"name":"故意的失敗測試,encryptStr0_Ansi/decryptStr0_Ansi","module":"yjSecurity","failed":1,"passed":0,"total":1},{"name":"encryptStr_Ansi/decryptStr_Ansi","module":"yjSecurity","failed":0,"passed":1,"total":1},{"name":"故意的失敗測試,encryptStr_Ansi/decryptStr_Ansi","module":"yjSecurity","failed":1,"passed":0,"total":1},{"name":"unicodeStr2ByteArray","module":"yjSecurity","failed":0,"passed":1,"total":1},{"name":"byteArray2UnicodeStr","module":"yjSecurity","failed":0,"passed":1,"total":1},{"name":"encryptStr0_Unicode/decryptStr0_Unicode","module":"yjSecurity","failed":0,"passed":5,"total":5},{"name":"故意的失敗測試,encryptStr0_Unicode/decryptStr0_Unicode","module":"yjSecurity","failed":1,"passed":0,"total":1},{"name":"encryptStr_Unicode/decryptStr_Unicode","module":"yjSecurity","failed":0,"passed":5,"total":5}],"summaries":[{"failed":3,"passed":23,"total":26,"runtime":276,"code":"D:\work\Source\WebPublic\Test\Test.yjSecurity.js\Node.js\source\yjSecurity.js"}],"coverages":[]}

接下來如何把測試結果顯示到瀏覽器中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章