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":[]}

接下来如何把测试结果显示到浏览器中。

原创文章 159 获赞 11 访问量 36万+

猜你喜欢

转载自blog.csdn.net/acrodelphi/article/details/22846671