什么是单元测试
单元测试是用来对一个模块、一个函数或者一个类来进行正确性检验的测试工具。
为何要进行单元测试?
- 测试自动化,不用每次手动
- 检测速度快,可以每天跑
- 测试角度层面挖掘更深
- 可以生成测试报告
什么是mocha
mocha是JavaScript的一种单元测试框架,既可以在浏览器环境下运行,也可以在Node.js环境下运行。使异步测试变得简单而有趣。
Mocha自身没有断言库,但是支持使用不同的断言库,每个断言库的用法有一些差异。像官网就是用的assert。本节使用chai的expect。
常见断言库
断言(assertion)是一种放在程序中的一阶逻辑(如一个结果为真或是假的逻辑判断式),目的是为了标示与验证程序开发者预期的结果
- should.js BDD
- assert()(mocha官网用的这种)
- expect.js (expect()样式的断定库)
- unexpected (可扩展的BDD断言工具)
- chai expect(), assert() and should()(本文档用的这个的expect)
什么是chai
介绍
Chai是一个用于node和浏览器的BDD / TDD断言库,可以与任何javascript测试框架轻松地配对。
提供了三个接口should / expect / assert
expect是使用比较多的一个,中文API点这
用法:
-
安装
npm install chai --save-dev
-
引入文件
var expect = require('chai').expect;
-
常见使用
语法都是头部的expect+to/to.be+equal/match …等等// true or false expect(true).to.be.true expect(false).to.be.false // equal,前者和后者是否相等 expect('hello').to.equal('hello') expect(1).to.equal(1); // 非空 expect(content).to.not.be.empty;
使用
安装环境
-
安装NodeJs,版本大于4,官网直接下载
-
安装mocha。
试了下局部安装,有些问题。mocha还是全局安装好npm install -g mocha
-
安装chai
npm install chai --save-dev //作为项目的依赖进行安装,局部安装
测试框架写法
-
目录结构
-
js文件
function multiply(x) { return x * 100; } module.exports = multiply;
-
添加测试js文件
var multiply = require('../js/1.js'); var expect = require('chai').expect; describe('乘法', function () { it('1 乘 100应该等于 100', function () { expect(multiply(1)).to.be.equal(100); }); });
-
命令行执行mocha 1.test.js
成功
失败,故意设定的,expect(multiply(1)).to.be.equal(90);
第一个case失败,第二个case成功,结果会显示失败的case以及出错原因(红色) -
将上面测试结果变成报告
5.1默认是spec ,下面设置tapmocha 1.test.js --reporter tap
5.2 生成结果生成html文件mocha --recursive -R doc > spec.html
5.3 使用mochawesome好看的html文件,全局安装npm install -g --save-dev mochawesome
mocha --reporter mochawesome test/1.test.js
mocha的使用
-
测试脚本和所测试脚本同名,后缀为.test.js 或者.spec.js(阮一峰老师这blog里面看见的,感觉比较规范)
-
测试脚本里面应该包括一个或多个describe块,每个describe块应该包括一个或多个it块。
describe块称为"测试套件"(test suite),表示一组相关的测试。
it块称为"测试用例"(test case),表示一个单独的测试,是测试的最小单位。比如我测试微信朋友圈功能,describe就是朋友圈,it就是点赞,评论,post图,发视频等等与朋友圈相关的功能点
两者语法,函数第一个参数都是对测试的描述,第二个参数是执行函数
进阶:
本节代码
参考目录
- chai
https://www.chaijs.com/
https://www.jianshu.com/p/ad59cfd158d4
https://www.jianshu.com/p/f200a75a15d2 - mocha
https://mochajs.cn/#installation
http://www.ruanyifeng.com/blog/2015/12/a-mocha-tutorial-of-examples.html
https://www.jianshu.com/p/4f7731b1a40b
https://blog.csdn.net/u013716535/article/details/97938866
转载:https://blog.csdn.net/u013716535/article/details/106047308