pickerel 发表于 2013-1-29 07:48:37

如何给Javascript代码做单元测试

javascript是很容易让人头疼的语言,不过如果能引入单元测试,那你的头疼似乎能得到些许的减缓。现在已经有一些javascript的单元测试工具存在了,今天我要介绍的是Dr Nic Williams开发的
JsUnitTest – JavaScript Unit Testing framework

 
JsUnitTest是一个纯用javascript开发的单元测试框架,通过引入它,你在浏览器中就可以运行你的单元测试代码。
 
JsUnitTest的使用:
1、从http://jsunittest.com/下载最新的JsUnitTest代码。
2、创建一个测试用的html,在这个html中引入你要测试的类库和JsUnitTest的js和css文件,并建立一个id为testlog的div块用来显示测试结果。
3、编写单元测试
new Test.Unit.Runner({    setup: function() {    },      teardown: function() {    },      testMethod1: function() { with(this) {    }},});   
以下是一个完整的单元测试示例:
<html><head><title>test</title><script src="jsunittest.js" type="text/javascript"></script> <link rel="stylesheet" href="unittest.css" type="text/css" /><script>      var MyObject = function(){};    MyObject.prototype.method1 = function(){return 1;};</script></head><body> <div id="testlog"></div><script type="text/javascript">new Test.Unit.Runner({      myObj: null,    setup: function() {      this.myObj = new MyObject();    },       teardown: function() {      this.myObj = null;    },       testMethod1: function() { with(this) {      assert(this.myObj.method1() == 2, "method1 return must be 2.");    }},});</script></body></html>  
JsUnitTest支持的断言方法:
assert: function(expression, message)assertEqual: function(expected, actual, message)assertNotEqual: function(expected, actual, message)assertEnumEqual: function(expected, actual, message)assertEnumNotEqual: function(expected, actual, message)assertHashEqual: function(expected, actual, message) assertHashNotEqual: function(expected, actual, message)assertIdentical: function(expected, actual, message)assertNotIdentical: function(expected, actual, message)assertNull: function(obj, message)assertNotNull: function(obj, message)assertUndefined: function(obj, message)assertNotUndefined: function(obj, message)assertNullOrUndefined: function(obj, message)assertNotNullOrUndefined: function(obj, message)assertMatch: function(expected, actual, message)assertNoMatch: function(expected, actual, message)assertHasClass: function(element, klass, message)assertHidden: function(element, message)assertInstanceOf: function(expected, actual, message)assertNotInstanceOf: function(expected, actual, message)assertRespondsTo: function(method, obj, message) assertRaise: function(exceptionName, method, message)assertNothingRaised: function(method, message)assertVisible: function(element, message) assertNotVisible: function(element, message)assertElementMatches: function(element, expression, message)  
 
页: [1]
查看完整版本: 如何给Javascript代码做单元测试