小言_互联网的博客

[Js_Testing]3分钟学会Mocha+Chai单元测试

375人阅读  评论(0)

什么是单元测试

单元测试是用来对一个模块、一个函数或者一个类来进行正确性检验的测试工具。

为何要进行单元测试?

  • 测试自动化,不用每次手动
  • 检测速度快,可以每天跑
  • 测试角度层面挖掘更深
  • 可以生成测试报告

什么是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图,发视频等等与朋友圈相关的功能点
    两者语法,函数第一个参数都是对测试的描述,第二个参数是执行函数

进阶:

本节代码


参考目录

  • 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
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场