Article December 20, 2022

初探mocha

Words count 13k Reading time 12 mins. Read count 0

初探mocha

原生html,js使用mocha进行测试

导入mocha相关库

1
2
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/mocha/3.2.0/mocha.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/mocha/3.2.0/mocha.js"></script>

初始化mocha,使用BDD方式进行测试

1
2
3
<script>
mocha.setup('bdd');
</script>

BDD,行为驱动开发

包含了三部分内容:测试、文档和示例

先有测试,运行测试失败,再进行调整试测试成功

加入断言库,chai

1
<script src="https://cdnjs.cloudflare.com/ajax/libs/chai/3.5.0/chai.js"></script>

对断言库进行初始化

1
2
3
<script>
let assert = chai.assert;
</script>

编写需要测试的代码

1
2
3
4
5
6
7
8
9
<script>
function pow(x, n) {
if (n === 0) {
return 1;
} else {
return x * pow(x, n - 1);
}
}
</script>

加入进行测试的js文件

1
<script src="test.js"></script>

创建mocha元素

1
<div id="mocha"></div>

执行mocha得到结果

1
2
3
<script>
mocha.run();
</script>

关于测试文件的编写

demo代码如下:

  1. 编写单个测试
1
2
3
4
5
describe("pow", function() {
it(`res is ${pow(2,3)} or not 8`, function() {
assert.equal(pow(2, 3), 8);
});
});

初探mocha-单个测试

  1. 编写多个测试
1
2
3
4
5
6
7
8
9
10
11
describe("pow", function () {
it(`res is ${pow(2, 3)} or not 8`, function () {
assert.equal(pow(2, 3), 8);
});
it(`res is ${pow(2, 4)} or not 16`, function () {
assert.equal(pow(2, 4), 16);
});
it(`res is ${pow(2, 5)} or not 32`, function () {
assert.equal(pow(2, 5), 32);
});
});

初探mocha-多个测试

  1. 进行指定测试执行
1
2
3
4
5
6
7
8
9
10
11
describe("pow", function () {
it(`res is ${pow(2, 3)} or not 8`, function () {
assert.equal(pow(2, 3), 8);
});
it.only(`res is ${pow(2, 4)} or not 16`, function () {
assert.equal(pow(2, 4), 16);
});
it(`res is ${pow(2, 5)} or not 32`, function () {
assert.equal(pow(2, 5), 32);
});
});

初探mocha-指定测试

更多断言操作,可看官方文档,地址:https://www.chaijs.com/api/assert/

mocha的官方文档地址:https://mochajs.org/

0%