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)