Javascript单元测试的基础
作者:网络转载 发布时间:[ 2013/11/6 10:25:09 ] 推荐标签:
当你写代码的时候,无论是JS代码或其他程序语言是否正常工作是一件你需要关注的事情。你写了一个代码片段,想让它能像预想的一样工作,没有任何差别,这是为什么你要写那段代码。想象一下,当你已经写了差不多几千行代码时,你能保证它能够正常工作吗?答案是不一定吧。
单元测试能够让你写的代码按照你之前预想的方式工作。
那么,究竟什么是单元测试?
维基百科上对于单元测试的定义是这样的:
单元测试是针对个别单元、一个或多个关联了控件数据的计算机程序模块、使用程序或执行程序进行正确性检验的测试方法。
我不知道你是否看懂了,反正我是没懂。这是为什么我有我自己的对于它的定义:
单元测试是一个可以用它来对代码块进行执行结果验证的方法。
到现在,我希望你能清楚单元测试是什么,同时知道它对于写代码是多么有用!
太多关于单元测试的定义了,到底怎么做
好吧,言归正传——怎么进行单元测试呢?
我们到底应该测试什么?
对于Javascript来说,我们应该测试的是操作结束后是否返回期望的结果。经常测试的内容如下:
1.方法的返回值
2.DOM节点的属性
3.局部变量的值
事实上,Js中的所有内容都能被测试,而且很简单。
怎么测试?
目前已经有很多测试的方法,甚至已经有一些框架像Jasmine和Quint,他们都可以让测试更简单。但至于现在,让文章更加简单(我是原生javascript的脑残粉),我将不会使用单元测试框架。我会写一个名叫”assert”的简单方法作为替代,它将在接下来的文章中被用到。
/**
* Simple assertionfunction
*
* @param {Any} objThe first object
* @param {Any} anoThe object to test against
* @return {Bool}If obj is exactly equal to ano
*/
function assert (obj, ano) {
return obj === ano;
}
多么简单的一个方法,是不?我还为你写了文档,以便你能轻易的理解它。那么现在我们已经有了干活的主要工具,让我们把它用起来吧。
测试代码
为了让文章更简单(其实是我懒得写),我将测试一些超简单的代码。我不会做有关DOM操作的测试,虽然那很简单(为节点设置属性,检查它是否设置成功),仅仅是因为我不想在此文中解决浏览相关的问题。
首先,在测试之前,我将写点代码。但写啥呢?写一个简单的add方法,它能实现两个数字相加。在此之前我将对这个方法的执行做一些预期:
1.它将接受两个输入参数,将它们相加,返回结果
2.如果输入参数数量不正确,它应该报错

sales@spasvo.com