Mocha
(发音”摩卡”)诞生于2011年,是现在最流行的JavaScript测试框架之一,在浏览器和Node环境都可以使用。
所谓”测试框架”,就是运行测试的工具。通过它,可以为JavaScript应用添加测试,从而保证代码的质量。
本文全面介绍如何使用Mocha
,让你轻松上手。如果你以前对测试一无所知,本文也可以当作JavaScript单元测试入门。值得说明的是,除了Mocha以外,类似的测试框架还有Jasmine
、Karma
、Tape
等,也很值得学习。
一、安装
我为本文写了一个示例库Mocha-demos
,请先安装这个库。
1 $ git clone https://github.com/ruanyf/mocha-demos.git
如果你的电脑没装Git,可以直接下载zip压缩包,进行解压。
然后,进入mocha-demos
目录,安装依赖(你的电脑必须有Node)。
12 $ cd mocha-demos$ npm install
上面代码会在目录内部安装Mocha
,为了操作的方便,请在全面环境也安装一下Mocha
。
1 $ npm install --global mocha
二、测试脚本的写法
Mocha
的作用是运行测试脚本,首先必须学会写测试脚本。所谓”测试脚本”,就是用来测试源码的脚本。
下面是一个加法模块add.js
的代码。
123456 // add.jsfunction add(x, y) {return x + y;}module.exports = add;
要测试这个加法模块是否正确,就要写测试脚本。
通常,测试脚本与所要测试的源码脚本同名,但是后缀名为.test.js
(表示测试)或者.spec.js
(表示规格)。比如,add.js
的测试脚本名字就是add.test.js
。
123456789 // add.test.jsvar add = require('./add.js');var expect = require('chai').expect;describe('加法函数的测试', function() {it('1 加 1 应该等于 2', function() {expect(add(1, 1)).to.be.equal(2);});});
上面这段代码,就是测试脚本,它可以独立执行。测试脚本里面应该包括一个或多个describe
块,每个describe
块应该包括一个或多个it
块。
describe
块称为”测试套件”(test suite),表示一组相关的测试。它是一个函数,第一个参数是测试套件的名称(”加法函数的测试”),第二个参数是一个实际执行的函数。
it
块称为”测试用例”(test case),表示一个单独的测试,是测试的最小单位。它也是一个函数,第一个参数是测试用例的名称(”1 加 1 应该等于 2″),第二个参数是一个实际执行的函数。
三、断言库的用法
上面的测试脚本里面,有一句断言。
1 expect(add(1, 1)).to.be.equal(2);
所谓”断言”,就是判断源码的实际执行结果与预期结果是否一致,如果不一致就抛出一个错误。上面这句断言的意思是,调用add(1, 1)
,结果应该等于2。
所有的测试用例(it块)都应该含有一句或多句的断言。它是编写测试用例的关键。断言功能由断言库来实现,Mocha本身不带断言库,所以必须先引入断言库。
1 var expect = require('chai').expect;
断言库有很多种,Mocha并不限制使用哪一种。上面代码引入的断言库是chai
,并且指定使用它的expect
断言风格。
expect
断言的优点是很接近自然语言,下面是一些例子。
1234567891011121314151617181920212223242526 et-more" -->所谓”测试框架”,就是运行测试的工具。通过它,可以为JavaScript应用添加测试,从而保证代码的质量。
本文全面介绍如何使用
Mocha
,让你轻松上手。如果你以前对测试一无所知,本文也可以当作JavaScript单元测试入门。值得说明的是,除了Mocha以外,类似的测试框架还有Jasmine
、Karma
、Tape
等,也很值得学习。一、安装
我为本文写了一个示例库
Mocha-demos
,请先安装这个库。
1 $ git clone https://github.com/ruanyf/mocha-demos.git
如果你的电脑没装Git,可以直接下载zip压缩包,进行解压。
然后,进入
mocha-demos
目录,安装依赖(你的电脑必须有Node)。
12 $ cd mocha-demos$ npm install
上面代码会在目录内部安装
Mocha
,为了操作的方便,请在全面环境也安装一下Mocha
。
1 $ npm install --global mocha
二、测试脚本的写法
Mocha
的作用是运行测试脚本,首先必须学会写测试脚本。所谓”测试脚本”,就是用来测试源码的脚本。下面是一个加法模块
add.js
的代码。
123456 // add.jsfunction add(x, y) {return x + y;}module.exports = add;
要测试这个加法模块是否正确,就要写测试脚本。
通常,测试脚本与所要测试的源码脚本同名,但是后缀名为
.test.js
(表示测试)或者.spec.js
(表示规格)。比如,add.js
的测试脚本名字就是add.test.js
。
123456789 // add.test.jsvar add = require('./add.js');var expect = require('chai').expect;describe('加法函数的测试', function() {it('1 加 1 应该等于 2', function() {expect(add(1, 1)).to.be.equal(2);});});
上面这段代码,就是测试脚本,它可以独立执行。测试脚本里面应该包括一个或多个
describe
块,每个describe
块应该包括一个或多个it
块。
describe
块称为”测试套件”(test suite),表示一组相关的测试。它是一个函数,第一个参数是测试套件的名称(”加法函数的测试”),第二个参数是一个实际执行的函数。
it
块称为”测试用例”(test case),表示一个单独的测试,是测试的最小单位。它也是一个函数,第一个参数是测试用例的名称(”1 加 1 应该等于 2″),第二个参数是一个实际执行的函数。三、断言库的用法
上面的测试脚本里面,有一句断言。
1 expect(add(1, 1)).to.be.equal(2);
所谓”断言”,就是判断源码的实际执行结果与预期结果是否一致,如果不一致就抛出一个错误。上面这句断言的意思是,调用
add(1, 1)
,结果应该等于2。所有的测试用例(it块)都应该含有一句或多句的断言。它是编写测试用例的关键。断言功能由断言库来实现,Mocha本身不带断言库,所以必须先引入断言库。
1 var expect = require('chai').expect;
断言库有很多种,Mocha并不限制使用哪一种。上面代码引入的断言库是
chai
,并且指定使用它的expect
断言风格。
expect
断言的优点是很接近自然语言,下面是一些例子。
1234567891011121314151617181920212223242526