Mocha

项目地址

介绍

feature

  • 灵活(不包括断言和仿真,自己选对应工具)
  • 流行的选择:chai,sinon
  • 社区成熟用的人多,测试各种东西社区都有示例
  • 需要较多配置
  • 可以使用快照测试,但依然需要额外配置

安装

# 安装依赖
$ npm install --save-dev mocha

使用

创建目录和文件

# 创建test目录
$ mkdir test

# 在test目录中创建并编辑test.js
$ open test/test.js

Mocha原生不支持ES module, 通过babel-register和babel-preset-env支持

# 安装依赖
$ npm install babel-register babel-preset-env --save-dev

然后在根目录创建.babelrc文件

# 创建.babelrc
$ touch .babelrc
// .babelrc内容如下
{
  "presets": [
    [
      "env"
    ]
  ]
}

test.js内容如下

var assert = require('assert');
import {
  regExpNumber10To99,
  replaceNumber10To99
} from '../../src/RegExp/number.js';
describe('RegExp number', function() {
  // 自定义函数返回布尔值判定是否通过
  describe('匹配开头不为0的,10~99的数字', function() {
    it('should return -1 when the value is not present', function() {
      let pass = false;
      const matched = '0'.match(regExpNumber10To99);
      console.log(matched);
      pass = true
      return pass;
    });
  });

  // assert.equal断言用法
  describe('匹配开头不为0的,10~99的数字', function() {
    it('输入0,应返回空字符串', function() {
      assert.equal(replaceNumber10To99('0'), '');
    });
    it('输入01,应返回1', function() {
      assert.equal(replaceNumber10To99('01'), '1');
    });
    it('输入012,应返回12', function() {
      assert.equal(replaceNumber10To99('012'), '12');
    });
    it('输入0012,应返回12', function() {
      assert.equal(replaceNumber10To99('0012'), '12');
    });
    it('输入00012,应返回12', function() {
      assert.equal(replaceNumber10To99('00012'), '12');
    });
    it('输入10,应返回10', function() {
      assert.equal(replaceNumber10To99('10'), '10');
    });
    it('输入101,应返回10', function() {
      assert.equal(replaceNumber10To99('101'), '10');
    });
    it('输入12345,应返回12', function() {
      assert.equal(replaceNumber10To99('12345'), '12');
    });
    it('输入4873478780000,应返回48', function() {
      assert.equal(replaceNumber10To99('4873478780000'), '48');
    });
  });
});

执行看效果

$ npm test
> [email protected] test
> mocha --require babel-register ./test/**/*.js

  RegExp number
    匹配开头不为0的,10~99的数字
      ✔ 输入0,应返回空字符串
      ✔ 输入01,应返回1
      ✔ 输入012,应返回12
      ✔ 输入0012,应返回12
      ✔ 输入00012,应返回12
      ✔ 输入10,应返回10
      ✔ 输入101,应返回10
      ✔ 输入12345,应返回12
      ✔ 输入4873478780000,应返回48


  9 passing (46ms)