目录

  • 什么是单元测试
  • 什么是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;
    

使用

安装环境

  1. 安装NodeJs,版本大于4,官网直接下载

  2. 安装mocha。
    试了下局部安装,有些问题。mocha还是全局安装好

    npm install -g mocha  
  3. 安装chai

    npm install chai --save-dev //作为项目的依赖进行安装,局部安装
    

测试框架写法

  1. 目录结构

  2. js文件

    function multiply(x) {return x * 100;
    }module.exports = multiply;
    
  3. 添加测试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);});
    });
    
  4. 命令行执行mocha 1.test.js
    成功

    失败,故意设定的,expect(multiply(1)).to.be.equal(90);

    第一个case失败,第二个case成功,结果会显示失败的case以及出错原因(红色)

  5. 将上面测试结果变成报告
    5.1默认是spec ,下面设置tap

     mocha 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的使用

  1. 测试脚本和所测试脚本同名,后缀为.test.js 或者.spec.js(阮一峰老师这blog里面看见的,感觉比较规范)

  2. 测试脚本里面应该包括一个或多个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单元测试相关推荐

  1. 前端Mocha+Chai单元测试

    一. 单元测试 单元测试分为两种: TDD:Test-Driven Development,测试驱动开发,注重输出结果. BDD:Behavior Driven Development,行为驱动开发, ...

  2. [Puppeteer]Puppeteer+Mocha+Chai实现端到端测试

    目录 项目 puppeteer实现自动化 知识点补充 Mocha+Chai实现测试 优化代码 本节代码 相关链接 项目 将单元测试框架mocha,断言chai和puppeteer结合起来做端到端测试: ...

  3. 大前端的自动化工厂(5)—— 基于Karma+Mocha+Chai的单元测试和接口测试

    一. 前端自动化测试 大多数前端开发者对测试相关的知识是比较缺乏的,一来是开发节奏很快,来不及写,另一方面团队里也配备了"人肉测试机",完全没必要自己来.但随着项目体量的增大,许多 ...

  4. 使用karma+mocha+chai为vue组件库做单元测试

    前言 单元测试,这一环节对我们的应用的重要性不言而喻,它能很大程度确保我们项目运行的健壮性.因此,前一段时间,笔者公司要求现有的vue搭建的npm组件库做单元测试.之前,笔者对单元测试做过了解,一直想 ...

  5. electron的单元测试(基于mocha+chai+karma)

    1. 最近有个接手在已有的(electron-vue)的项目中做单元测试,但是基于vue-electron脚手架搭建的项目的electron是2.0.4版本,而最新的electron已经升级到11版本 ...

  6. 前端单元测试-karma+mocha+chai

    一.概念普及 1.单元测试运行环境: 运行环境是集成一系列功能的工具,我们可以通过它来选择"测试框架".自动打开浏览器.查看测试结果等功能.我们可以把它近似的理解为vue的vue- ...

  7. 前端新手使用karma+mocha+chai+sinon 进行angularjs 单元测试

    这里只谈如何搭建环境. 选型:在jasmine 和 mocha+chai中间比较了一下,根据项目需要选择了后者. 安装依赖包和环境 直接执行下列命令安装或在项目目录下 运行npm install(pa ...

  8. 【nodejs】mocha+chai+nyc基础

    前言 以前就听说单元测试什么的,没怎么重视,既然这玩意那么多人吹,肯定有好处,再研究看看. 官网 chai官网文档 mocha文档. chai-http文档 nyc文档 安装 用js的不用装@type ...

  9. vue-cli自动化测试karma + mocha + chai

    最近再为团队团队选择可行的测试方案.前端目前是vue-cli技术栈.试着在vue项目添加测试.把测试完整的方案记录下来. vue官网给的例子用的是karma + mocha + chai. karma ...

最新文章

  1. c#中分割字符串的几种方法
  2. LiveBos---扩展按钮调用方法
  3. 如何写出正确的二分查找?——利用循环不变式理解二分查找及其变体的正确性以及构造方式...
  4. 混合牛奶pascal程序
  5. 65.Java语法糖
  6. 万字总结:开源软件通识基础课第三周知识点总结
  7. Essentials of Deep Learning: Visualizing Convolutional Neural Networks in Python
  8. MATLAB调用USB摄像头实现过程
  9. 从零开始学python | 什么是Python JSON?
  10. Vue.js学习总结(1)——Windows下Vue.js开发环境搭建
  11. Nodemon包的使用
  12. 【SpringBoot_ANNOTATIONS】组件注册 01 @Configuration @Bean
  13. 专访李运华:程序员如何在技术上提升自己
  14. idea中maven项目,输出在控制台上的中文乱码问题
  15. BoundsChecker使用说明
  16. 请更换备份电池 pos机_河南付临门pos机刷卡手续费
  17. 如何在面试中介绍自己的项目经验
  18. 机器学习综述——机器学习理论基础与发展脉络
  19. AsyncTask的优缺点
  20. GitLab CI/CD 多项目,多流水线制品合并方案

热门文章

  1. 回顾丨2022隐私计算融合区块链技术论坛(附视频+演讲PPT)
  2. 20189220 余超《Linux内核原理与分析》第七周作业
  3. js中的内存溢出和内存泄漏
  4. VsCode使用笔记【1】Ubuntu+vscode+Monokai+修改主题中的字体颜色
  5. Logcat常见用法
  6. net start命令的使用
  7. 网站只有首页能打开,其他页面404
  8. 固实压缩文件容易损坏_你不知道的压缩软件小技巧1
  9. Word - Word快速去水印的 3 大绝招,再忙也要看
  10. Elasticsearch 使用同义词 一