Mocha单元测试基本用法,主要讲解内容为:单元测试大致流程、单元测试基本用法、单元测试生命周期、测试管道管理、动态生成测试用例。

单元测试基本用法

测试脚本可以独立执行。一个测试脚本里面应该包括一个或多个describe块,每个describe块应该包括一个或多个it块。

  • 需要测试的脚本:add.js

    效果图

  • 单元测试脚本:add.test.js

    效果图

NodeJS知识点: module.exports 导出模块接口、require 导入接口

  • 单元测试语法

    效果图

    • “测试套件”(test suite):describe (moduleName, testDetails)。可以嵌套使用,明白、易懂即可。describe块称为”测试套件”(test suite),表示一组相关的测试。它是一个函数,第一个参数是测试套件的名称(”加法函数的测试”),第二个参数是一个实际执行的函数。

    • “测试用例”(test case):it (info, function)。具体的测试语句,可多个。it块称为”测试用例”(test case),表示一个单独的测试,是测试的最小单位。它也是一个函数,第一个参数是测试用例的名称(”1 加 1 应该等于 2”),第二个参数是一个实际执行的函数。
      • info,写期望的正确输出的简要一句话文字说明。info:当该it 的block内的test failed的时候控制台就会把详细信息打印出来。
      • 测试用例之中,只要有一个断言为false,这个测试用例就会失败,只有所有断言都为true,测试用例才会通过。
      • function,具体测试函数,一个测试用例内部,包含一个或多个断言(assert)。
    • chai断言库:expect、assert 等写法。

      • assert.equal (exp1, exp2) :断言判断exp1结果是否等于exp2,这里采取的等于判断是== 而并非 === ,即 assert.equal(1, ‘1’) 认为是True。assert断言风格。

        效果图

单元测试生命周期

  • 每个测试块(describe)有4个周期函数:before、beforeEach、afterEach、after

    周期函数 存在周期 主要功能
    before() 在本区块的所有测试用例之前执行 用于同一的桩数据导入等功能
    beforeEach() 在本区块的每个测试用例之前执行 用于清理测试环境,删除或回滚相关数据
    afterEach() 在本区块的每个测试用例之后执行 可以用于准备测试用例所需的前置条件
    after() 在本区块的所有测试用例之后执行 可以用于准备测试用例所需的后置条件

详见【demo2

测试管道管理

  • only方法:表示只运行某个测试套件或测试用例。

    • add.test.js

      效果图

    • 执行mocha

      效果图

  • skip方法:表示跳过指定的测试套件或测试用例。

    • multiply.test.js

      效果图

    • 执行mocha

      效果图

详见【demo3

动态生成测试用例

  • forEach:有多个测试数据需要显示的时候

    • add.test.js

      效果图

    • 执行mocha

      效果图

详见【demo4

以上文章来自:黄卉 , https://huanghui8030.github.io/mocha/jbyf.html