版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_38355456/article/details/79480305
1、所需要用到的模块
- assert 是nodejs原生的断言 - chai 是封装了的三方断言工具库 - power-assert 也是封装了的三方断言工具库 - mocha 专门用来测试的第三方框架,非常强大,推荐使用 - istanbul 是用来做单元测试覆盖率的,非常强大好用
2、首先建立一个基础的math.js的文件,写入一些需要测试的基础方法:
module.exports = {
add: (...args) => {
return args.reduce((prev, curr) => {
return prev + curr;
})
},
mul: (...args) => {
return args.reduce((prev,curr)=>{
return prev*curr;
})
}
};
3、chai 断言库的基本使用
const {should,expect,assert}=require('chai');
const {add,mul}=require('../01、math');
should();
add(2,3).should.equal(5);
expect(add(2,3)).to.be(5);
assert.equal(add(2,3),5);
4、chai 结合 mocha 做基本的单元测试使用方法
const {should,expect,assert}=require('chai');
const {add,mul}=require('../01、math');
describe('#math',()=>{
before((done)=>{
//这个地方是可以写一些测试前执行的函数
done();
});
describe('add',()=>{
it('should return 5 when 2+3', function () {
expect(add(2,3),5)
});
it('should return -1 when 2-3', function () {
expect(add(2,-3),-1)
});
/* it.only('should return -1 when 2-3', function () {
expect(add(2,-3),-1)
});*/
/* it.skip('should return -1 when 2-3', function () {
expect(add(2,-3),-1)
});*/
});
describe('mul',()=>{
it('should return 6 when 2*3', function () {
expect(mul(2,3),6)
});
})
});
describe('#test',()=>{
describe('add',()=>{
it( 'should return 5 when 2+3', function () {
expect(add(2,3),5);
});
});
describe('mul',()=>{
it('should return 6 when 2*3', function () {
expect(mul(2,3),6);
});
});
});
describe这个函数里面,before可以对测试做前置处理。it是具体的测试回调,回调可以有一个参数,done,这个done其实也是一个回调函数,可以控制测试单元it的执行。
5、power-assert结合mocha 通过调用done回调函数的方式来进行单元测试
const assert=require('power-assert');
const {add,mul}=require('../01、math');
describe('#test',function(){
describe('add',()=>{
it('should return 5 when 2+3', function (done) {
done(assert(add(2,3))===5);
});
it('should return -1 when 2-3', function (done) {
let a=2,b=-3;
done(assert(add(a,b))===-1);
});
});
describe('mul',()=>{
it('should return 6 when 2*3', function () {
assert.equal(mul(2,3), 6)
});
})
});
6、最后可以在package.json 里面配置script启动项:
"scripts": {
"test": "mocha 18年/2月/7、单元测试/test/02、mocha.js",
"cover": "istanbul cover node_modules/mocha/bin/_mocha 18年/2月/7、单元测试/test/02、mocha.js"
},