学习Mocha

学习Mocha

Mocha(发音“摩卡”),是JavaScript测试框架之一,在浏览器和Node环境下都可以使用,在同步的测试,只需要直接判断函数的返回值是否和预期的一样,而异步的测试,就需要框架支持回掉、promise或其他的方式判断测试结果的正确性,Mocha可以支持JavaScript异步的单元测试

安装

npm install --global mocha

mocha支持任何可以抛出一个错误的断言模块。例如:should.js、better-assert、expect.js、unexpected、chai等。

同步代码测试

var assert = require('chai').assert;

describe('Array', function() {
    describe('#indexOf()', function() {
        it('should return -1 when the value is not present', function() {
            assert.equal(-1, [1, 2, 3].indexOf(5));
            assert.equal(-1, [1, 2, 3].indexOf(0));
        });
    });
});

测试结果:

这里写图片描述

另一个例子:add.js

function add(x, y) {
    return x + y;
}

module.exports = add;

对应的测试脚本,add.test.js

var add = require('./add');
var expect = require('chai').expect;

describe('加法函数的测试', function() {
    it('1加1应该等于2', function() {
        expect(add(1, 1)).to.be.equal(2);
    });
    it('1加零的测试', function() {
        expect(add(1, 0)).to.be.equal(1);
    });
})

都是需要断言的,所以需要安装chai模块,npm install chai

异步代码测试

输入mocha -t 5000 set.test.js

这里写图片描述

面命令将测试的超时时限指定为5000毫秒。

另外,上面的测试用例里面,有一个done函数。it块执行的时候,传入一个done参数,当测试结束的时候,必须显式调用这个函数,告诉Mocha测试结束了。否则,Mocha就无法知道,测试是否结束,会一直等到超时报错。

测试用例的钩子

Mocha在describe块之中,提供测试用例的四个钩子:before()after()beforeEach()afterEach()。它们会在指定时间执行。

describe('hooks', function() {

  before(function() {
    // 在本区块的所有测试用例之前执行
  });

  after(function() {
    // 在本区块的所有测试用例之后执行
  });

  beforeEach(function() {
    // 在本区块的每个测试用例之前执行
  });

  afterEach(function() {
    // 在本区块的每个测试用例之后执行
  });

  // test cases
});

mocha --recursive -R markdown > spec.md,生成一个规格文件spec.md,-R markdown参数指定规格报告是markdown格式

mocha --recursive -R doc > spec.html,生成HTML格式的报告

参考:
http://www.ruanyifeng.com/blog/2015/12/a-mocha-tutorial-of-examples.html
http://www.cnblogs.com/Leo_wl/p/5734889.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值