使用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就可以啦。
相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- Android学习笔记(二九):嵌入浏览器
- Android java 与 javascript互访(相互调用)的方法例子
- 使用 HTTP 上传 G 级的文件之 Node.js 版本
- JavaScript演示排序算法
- mongo实现消息队列
- javascript实现10进制转为N进制数
- Node.js压缩web项目中的js,css和图片
- 最后一次说说闭包
- Ajax
- 2019年开发人员应该学习的8个JavaScript框架
- HTML中的script标签研究
- 对一个分号引发的错误研究
- async.js 学习记录
- 异步流程控制:7 行代码学会 co 模块
- ES6 走马观花(ECMAScript2015 新特性)
- JavaScript拆分字符串时产生空字符的原因