安装
使用npm全局安装:
(c)npm install -g mocha
或者在项目中当作依赖包进行安装:
(c)npm install --save-dev mocha
在文件夹中创建test文件夹,创建文件test.js
const assert = require('assert')
describe('Array', function () {
describe('#indexOf()', function () {
it ('当值不存在时,应返回-1', function () {
assert.equal(-1, [1, 2, 3].indexOf(4))
})
})
})
创建package.json,添加运行脚本:
{
"scripts":{
"test": "mocha"
}
}
现在整个项目的目录结构是这样的
mocha-test/
|
+- test/ <-- 存放所有test
|
| |+- test.js <-- 测试文件
|
+- package.json <-- 项目配置文件
|
+- node_modules/ <-- npm安装的依赖包
运行
运行脚本,会执行test文件下所有的文件
npm run test
> mocha
Array
#indexOf()
√ 当值不存在时,应返回-1
1 passing (14ms)
test.js文件中的代码就是测试脚本。测试脚本一般至少要有一个或者多个describe函数,而一个describe函数应有一个或多个it函数。
describe函数,第一个参数会被输出在控制台中,作为一个Test Suite(用例集、测试套件)的描述,而且这个描述可以根据自己的需求来进行嵌套输出的。
it函数,第一个参数是用来输出TestCase(测试用例)的描述,测试输出结果前面有对勾表示测试通过,第二个参数是一个函数,用来编写测试内容,用断言模块来判断测试结果的正确性。
断言
在上面例子中我们用到了assert,这个是Node自身的assert模块(断言),其实mocha支持各种断言库,例如:
should.js
chai
expect.js
better-assert
unexpected
同步代码
在同步代码测试的时候,测试用例一个执行完就继续执行下一个用例
在根目录下创建一个add.js的文件,代码如下
module.exports = function (x, y) {
return x + y
}
测试文件test.js代码如下
const assert = require('assert')
const add = require('../add')
describe('加法测试', function () {
it('1加1应等于2', function () {
assert.strictEqual(add(1, 1), 2)
})
it('2加2应等于4', function () {
assert.strictEqual(add(2, 2), 4)
})
it('3加3应等于6', function () {
assert.strictEqual(add(3, 3), 6)
})
})
测试结果如下
加法测试
√ 1加1应等于2
√ 2加2应等于4
√ 3加3应等于6
3 passing (9ms)
箭头函数
不推荐在Mocha中使用箭头函数,由于this作用域的问题,箭头函数中,this无法正常获取Mocha上下文,这样,在运行下面的代码时,我们会发现第一个测试通过,第二测试会报错提示:this.timeout is not a function
describe('function函数测试', function () {
it('测试1', function () {
this.timeout(1000)
assert.ok(true)
})
})
describe('箭头函数测试', () => {
it('测试2', () => {
this.timeout(1000)
assert.ok(true)
})
})
待续...
网友评论