[Js_Testing]3分钟学会Mocha+Chai单元测试
目录
- 什么是单元测试
- 什么是mocha
- 常见断言库
- 什么是chai
- 介绍
- 用法:
- 使用
- 安装环境
- 测试框架写法
- mocha的使用
- 本节代码
- 参考目录
什么是单元测试
单元测试是用来对一个模块、一个函数或者一个类来进行正确性检验的测试工具。
为何要进行单元测试?
- 测试自动化,不用每次手动
- 检测速度快,可以每天跑
- 测试角度层面挖掘更深
- 可以生成测试报告
什么是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图,发视频等等与朋友圈相关的功能点
两者语法,函数第一个参数都是对测试的描述,第二个参数是执行函数
进阶:
- Mocha+Chai单元测试进阶
- Puppeteer+Mocha+Chai实现端到端测试
本节代码
参考目录
- 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
[Js_Testing]3分钟学会Mocha+Chai单元测试相关推荐
- 前端Mocha+Chai单元测试
一. 单元测试 单元测试分为两种: TDD:Test-Driven Development,测试驱动开发,注重输出结果. BDD:Behavior Driven Development,行为驱动开发, ...
- [Puppeteer]Puppeteer+Mocha+Chai实现端到端测试
目录 项目 puppeteer实现自动化 知识点补充 Mocha+Chai实现测试 优化代码 本节代码 相关链接 项目 将单元测试框架mocha,断言chai和puppeteer结合起来做端到端测试: ...
- 大前端的自动化工厂(5)—— 基于Karma+Mocha+Chai的单元测试和接口测试
一. 前端自动化测试 大多数前端开发者对测试相关的知识是比较缺乏的,一来是开发节奏很快,来不及写,另一方面团队里也配备了"人肉测试机",完全没必要自己来.但随着项目体量的增大,许多 ...
- 使用karma+mocha+chai为vue组件库做单元测试
前言 单元测试,这一环节对我们的应用的重要性不言而喻,它能很大程度确保我们项目运行的健壮性.因此,前一段时间,笔者公司要求现有的vue搭建的npm组件库做单元测试.之前,笔者对单元测试做过了解,一直想 ...
- electron的单元测试(基于mocha+chai+karma)
1. 最近有个接手在已有的(electron-vue)的项目中做单元测试,但是基于vue-electron脚手架搭建的项目的electron是2.0.4版本,而最新的electron已经升级到11版本 ...
- 前端单元测试-karma+mocha+chai
一.概念普及 1.单元测试运行环境: 运行环境是集成一系列功能的工具,我们可以通过它来选择"测试框架".自动打开浏览器.查看测试结果等功能.我们可以把它近似的理解为vue的vue- ...
- 前端新手使用karma+mocha+chai+sinon 进行angularjs 单元测试
这里只谈如何搭建环境. 选型:在jasmine 和 mocha+chai中间比较了一下,根据项目需要选择了后者. 安装依赖包和环境 直接执行下列命令安装或在项目目录下 运行npm install(pa ...
- 【nodejs】mocha+chai+nyc基础
前言 以前就听说单元测试什么的,没怎么重视,既然这玩意那么多人吹,肯定有好处,再研究看看. 官网 chai官网文档 mocha文档. chai-http文档 nyc文档 安装 用js的不用装@type ...
- vue-cli自动化测试karma + mocha + chai
最近再为团队团队选择可行的测试方案.前端目前是vue-cli技术栈.试着在vue项目添加测试.把测试完整的方案记录下来. vue官网给的例子用的是karma + mocha + chai. karma ...
最新文章
- c#中分割字符串的几种方法
- LiveBos---扩展按钮调用方法
- 如何写出正确的二分查找?——利用循环不变式理解二分查找及其变体的正确性以及构造方式...
- 混合牛奶pascal程序
- 65.Java语法糖
- 万字总结:开源软件通识基础课第三周知识点总结
- Essentials of Deep Learning: Visualizing Convolutional Neural Networks in Python
- MATLAB调用USB摄像头实现过程
- 从零开始学python | 什么是Python JSON?
- Vue.js学习总结(1)——Windows下Vue.js开发环境搭建
- Nodemon包的使用
- 【SpringBoot_ANNOTATIONS】组件注册 01 @Configuration @Bean
- 专访李运华:程序员如何在技术上提升自己
- idea中maven项目,输出在控制台上的中文乱码问题
- BoundsChecker使用说明
- 请更换备份电池 pos机_河南付临门pos机刷卡手续费
- 如何在面试中介绍自己的项目经验
- 机器学习综述——机器学习理论基础与发展脉络
- AsyncTask的优缺点
- GitLab CI/CD 多项目,多流水线制品合并方案