首先要弄清楚什么是单元。单元就是一个相对独立的功能模块,可以是一个类,或是一个模块,或是一个方法。
单元测试的目的,就是首先保证一个系统的基本组成单元(类、模块或方法)能正常工作。打个比方,你想一台机器能正常工作,首先要保证它的每一个零件和组件能正常工作。而单元测试就是对这些零件和组件进行的测试。
所谓”测试框架”,就是运行测试的工具。通过它,可以为JavaScript应用添加测试,从而保证代码的质量。
JavaScript的单元测试框架很多,这里我们介绍一下Mocha。Mocha(发音”摩卡”)诞生于2011年,是现在最流行的JavaScript测试框架之一,在浏览器和Node环境都可以使用。
下面就来介绍一下Mocha的使用方法(以下操作都假设你的电脑有Nodejs环境)。
安装Mocha
打开命令提示符工具,运行以下命令,全局安装Mocha:
- 1
一个简单的例子
新建一个test目录,进到与test的同级目录,编写一个测试脚本。通常测试脚本与需要测试的源码脚本同名,但是后缀名改为.test.js或.spec.js(表示规格)。这里我们先新建一个测试文件命名为test1.test.js:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
上面这段代码就是测试脚本,它可以独立执行。脚本下包括一个或多个describe块,每个describe块包括一个或多个it块。
describe块称为“测试套件”,表示一组相关的测试。它是一个函数,第一个参数是测试套件的名称,第二个参数是实际执行的函数。
it块称为“测试用例”,表示一个单独的测试,是测试的最小单位。它也是一个函数,第一个参数是测试用例的名称,第二个参数是实际执行的函数。
下面的“expect(4 + 5).to.be.equal(9);”语句叫做断言。所谓断言就是判断源码的实际执行结果与预期是否一致,如果不一致就抛出一个错误。
所有测试用例都应该含有一个或多个断言。断言功能由断言库来实现,Mocha本身并不带有断言库,所以必须先引入断言库:
- 1
断言库有很多种,Mocha并不限制使用哪一种。上面代码引入的断言库是chai,并且指定使用它的expect断言风格。expect断言的优点就是很接近自然语言。看,expect(4 + 5).to.be.equal(9),期望(4+5)等于9,多么简洁明了。。。
现在万事具备,切回命令提示符工具,运行mocha 命令,你会看到类似这样的输出:
如果expect断言不成立,则会抛出一个错误。只要不抛出错误,测试用例就算通过。
好了,现在你的第一个单元测试的例子已经运行成功了,好开心啊有没有!
expect还有一些其他的语句,如下所示:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
测试项目中的方法
OK,简单例子说完了,接下来我们看看怎样在项目中测试自己写的方法。
先新建一个项目,文件目录结构如下图所示:
其中,calculate.js文件的代码为:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
calculate.test.js文件的代码为:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
用命令行工具进入test的同级目录,运行mocha 命令,看到以下运行结果:
测试通过!
https://blog.csdn.net/u012510478/article/details/54728921