什么是Mocha
Mocha是一个简单灵活的javascript测试框架,用于nodejs和浏览器上的javascript应用测试。
搭建Mocha测试环境
安装依赖:
1 | mkdir myproject |
在根目录下创建gulpfile.js:
1 | let path = require('path'); |
之后就可以通过gulp test
调用位于./test目录下的测试用例了。
编写基本测试用例
假如我们要测试的脚本是add.js:
1 | function add(x, y) { |
我们可以在./test目录下添加相应的测试用例add.test.js:
1 | var add = require('./add.js'); |
其中:
- require(‘./add.js’)引入需要测试的模块
- require(‘should’)引入了断言库should
- describe块包含一组相关的测试用例,每一个测试用例对应一个it块,如测试add方法时,我们可能需要测试两个负数相加,两个小数相加等多种情况。
- 每一个it块都是一个测试用例,他们是单元测试的最小单位。
总结一下,一个测试脚本包含了多个测试套件和他们对应的测试用例,通过编写周密的测试用例,我们可以将代码中的大部分bug扼杀在摇篮中。
测试后端api
我们可以把每一个api看做一个函数,给定一组输入判断其对应的输出。唯一不同之处在于,api的输入来自于http请求,因此模拟http请求就成了api测试的关键。此处,我们使用supertest来模拟http请求。
首先安装supertest:
1 | npm install supertest --save-dev |
比如我们想测试一个简单的基于express服务app.js:
1 | var express = require('express'); |
接着,我们在./test目录下添加相应的测试用例app.test.js:
1 | const app = require('../app.js'); |
调用gulp test
就可以看到相应的测试结果。
除了编写独立的测试用例,如果我们的api涉及到对数据库中数据的更改,我们可以通过before和after模块,添加/删除测试数据,保证数据库的纯净。
测试React组件
由于React页面使用jsx模板语言进行渲染,因此,如同所有的动态网站测试,我们可以等待网页渲染完成之后再对其组件进行测试。然而,React还存在一个独一无二的概念:VirtualDOM,因此,如果我们的测试用例不涉及和真实DOM的交互,我们完全可以通过VirtualDOM测试DOM中的内容即可。
基于这两种情况,react官方为我们提供了相应的测试工具库:react-addons-test-utils。还是通过例子来说明其用法。
首先实现一个简单的React Component Title:
1 | //./Title.jsx |
接着引入官方测试工具集,之后我们会在测试用例中用到该方法:
1 | //./test/utils.js |
在./test目录下添加相应的测试用例title.test.js:
1 | import Title from '../Title.jsx'; |
这样我们就实现对虚拟DOM的测试。
参考资料: