您的位置:首页 > Web前端 > Node.js

使用Mocha进行Node.js的单元测试

2016-03-11 16:38 639 查看

我要写测试

之前的Java开发中,使用JUnit进行单元测试的感觉棒棒哒,用Node.js写了一些功能之后深觉没有单元测试是一件非常糟糕的事情(开发效率降低,同时代码质量下降),于是学习下单元测试相关的东西,这里使用Mocha进行。

Mocha简介

Mocha is a feature-rich JavaScript test framework running on Node.js and the browser, making asynchronous testing simple and fun. Mocha tests run serially, allowing for flexible and accurate reporting, while mapping uncaught exceptions to the correct test cases. Hosted on GitHub.

先贴一段来自官网的简介,Mocha是一个功能非常丰富的JavaScript单元测试框架,可以跑在Node.js上面,也可以跑在浏览器里面,同时对于异步的测试也很在行。

这里只打算写一些进行Node.js单元测试的东西。

安装

npm install -g mocha


用代码说话

简单的栗子

// 目录:/tests/test.js
var assert =  require('assert');
describe('Array', function() {
describe('#indexOf()', function() {
it('should return -1 when the value is not present', function() {
[1,2,3].indexOf(5).should.equal(-1);
[1,2,3].indexOf(0).should.equal(-1);
});
});
});


首先是一个来自官网的例子,在tests目录下直接执行‘Mocha’,返回结果

Array
#indexOf()
√ should return -1 when the value is not present


可以看到,describe接收的第一个参数是对于后面function的描述,描述是自行指定的,用来描述进行的测试。describe可以嵌套,内部执行的it,也是需要一个描述和function,it的function是执行的测试代码。

assert是自带的断言库,这里是最简单的断言,也可以使用其他的诸如should.js,expect.js,chai。

异步栗子

// 这里用来测试本机上的/login接口
var request = require('request');
describe('auth', function () {
describe('#login', function () {
it('should be ok', function (done) {
var data = {
'userAccount': '123@gmail.com',
'password': '123'
};
request.post('http://localhost:8080/login', {form: data}, function (err, httpResponse, body) {
if (err) {
throw err;
}
if (body === 'success') {
done();
} else {
throw new Error();
}
});
});
});
});


it的function接收一个done参数,这是一个回调函数(callback),如果测试通过,调用这个函数就可以啦,如果不通过,那么扔一个异常出来,这样就把测试通过与没有通过分开了。(就是这么简单)

对于需要登录才能访问的接口,请求的时候带上cookie就可以啦。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息