我的测试人生........
【转】Javascript单元测试的基础
上一篇 /
下一篇 2013-11-05 23:41:55
/ 个人分类:测试技术
当你写代码的时候,无论是JS代码或其他程序语言是否正常
工作是一件你需要关注的事情。你写了一个代码片段,想让它能像预想的一样工作,没有任何差别,这就是为什么你要写那段代码。想象一下,当你已经写了差不多几千行代码时,你能保证它能够正常工作吗?答案是不一定吧。
那么,究竟什么是单元测试?
维基百科上对于单元测试的定义是这样的:
单元测试是针对个别单元、一个或多个关联了控件数据的计算机程序模块、使用程序或执行程序进行正确性检验的测试方法。
我不知道你是否看懂了,反正我是没懂。这就是为什么我有我自己的对于它的定义:
单元测试是一个可以用它来对代码块进行执行结果验证的方法。
到现在,我希望你能清楚单元测试是什么,同时知道它对于写代码是多么有用!
太多关于单元测试的定义了,到底怎么做
好吧,言归正传——怎么进行单元测试呢?
我们到底应该测试什么?
对于Javascript来说,我们应该测试的是操作结束后是否返回期望的结果。经常测试的内容如下:
1.方法的返回值
2.DOM节点的属性
3.局部变量的值
事实上,Js中的所有内容都能被测试,而且很简单。
怎么测试?
目前已经有很多测试的方法,甚至已经有一些框架像Jasmine和Quint,他们都可以让测试更简单。但至于现在,让
文章更加简单(我是原生javascript的脑残粉),我将不会使用单元测试框架。我会写一个名叫”assert”的简单方法作为替代,它将在接下来的文章中被用到。
/** * Simple assertionfunction * * @param {Any} objThe first object * @param {Any} anoThe object to testagainst * @return {Bool}If obj is exactly equal to ano */ function assert (obj, ano) { return bj === ano; } |
多么简单的一个方法,是不?我还为你写了文档,以便你能轻易的理解它。那么现在我们已经有了干活的主要工具,让我们把它用起来吧。
测试代码
为了让文章更简单(其实是我懒得写),我将测试一些超简单的代码。我不会做有关DOM操作的测试,虽然那很简单(为节点设置属性,检查它是否设置成功),仅仅是因为我不想在此文中解决浏览相关的问题。
首先,在测试之前,我将写点代码。但写啥呢?写一个简单的add方法,它能实现两个数字相加。在此之前我将对这个方法的执行做一些预期:
1.它将接受两个输入参数,将它们相加,返回结果
2.如果输入参数数量不正确,它应该报错代码真的很简单,相信我!代码如下:
/** * Add two numbers * * @param {Number} n1 The first number * @param {Number} n2 The second number * @return {Number} Sum of n1 and n2 */ function add (n1, n2) { // arguments is an array of arguments passed // So, arguments.length is the number of arguments if (arguments.length !== 2) { throw new Error (); } return n1 + n2; } |
现在,我们需要测试它是否会按预期来执行。
assert(add(1, 4), 5) // true assert(add(45,34,80)) // false |
恭喜!你已经学会了如何对你的代码进行单元测试。我已经讲述了JS中关于单元测试的大部分基础的东西,但仍有很多内容需要
学习。但这篇文章仅仅是基础!
我为各位读者准备了一些作业:
1.写一个方法,可以判断一个值小于另一个值。同样的,写另一个方法,判断该值大于另一个值
2.写一些方法来判断,一个对象是否是
· Object
· String
· Function
· Boolean
收藏
举报
TAG: