mocha 是一个功能丰富的javascript测试框架,能够运行在nodejs和浏览器环境,使异步测试变得简单有趣。mocha 串联运行测试,容许灵活和精确地报告结果,同时映射未捕获的异经常使用来纠正测试用例。javascript
支持TDD/BDD 的 开发方式,结合 should.js/expect/chai/better-assert 断言库,能轻松构建各类风格的测试用例。java
特色node
安装npm
经过npm全局安装:数组
npm install -g mocha
咱们首先来见识一下mocha最基本的测试用例是怎么的结构,以下:浏览器
测试用例:框架
//模块依赖 var assert = require("assert"); //断言条件 describe('Array', function(){ describe('#indexOf()', function(){ it('当值不存在时应该返回 -1', function(){ assert.equal(-1, [1,2,3].indexOf(5)); assert.equal(-1, [1,2,3].indexOf(0)); }); }); });
示例解析: 测试用例首先须要引用断言模块,如上文中var assert = require('assert');,代码 assert.equal(-1, [1,2,3].indexOf(5)); 中使用的是assert.equal(actual, expected, [message]) 语法。做用等同于使用'=='进行相等判断。actual为实际值,expected 为指望值。message为返回的信息。异步
运行测试
Mocha:$ mocha
断言(assert)指的是对代码行为的预期。一个测试用例内部,包含一个或多个断言(assert)。ui
断言会返回一个布尔值,表示代码行为是否符合预期。测试用例之中,只要有一个断言为false,这个测试用例就会失败,只有全部断言都为true,测试用例才会经过。
好比上节示例中的:
assert.equal(-1, [1,2,3].indexOf(5)); assert.equal(-1, [1,2,3].indexOf(0));
实际值(-1)和指望值([1,2,3].indexOf(5))是同样的,断言为true,因此这个测试用例成功了。
mocha 容许开发者使用任意的断言库,当这些断言库抛出了一个错误异常时,mocha将会捕获并进行相应处理。这意味着你能够利用如 should.js断言库、 Node.js 常规的 assert 模块或其它相似的断言代码库。如下是众所周知的适用于Node.js或浏览器的断言库:
Chai 是一个很是灵活的断言库,它可让你使用以下三种主要断言方式的任何一种:
这是来自老派测试驱动开发的经典的assert方式。好比:
assert.equal(variable, "value");
这种链式的断言方式在行为驱动开发中最为常见。好比:
expect(variable).to.equal("value");
这也是在测试驱动开发中比较经常使用的方式之一。举例:
variable.should.equal("value");
expect 库应用是很是普遍的,它拥有很好的链式结构和仿天然语言的方法。一般写同一个断言会有几个方法,好比expect(response).to.be(true) 和 expect(response).equal(true)。如下列举了 expect 经常使用的主要方法:
在课程开始讲解什么是mocha的时说:mocha支持TDD/BDD 的 开发方式,结合 should.js、expect、chai、better-assert 断言库,能轻松构建各类风格的测试用例。这里面有两个知识点,一个是断言库,另外一个是 TDD/BDD 。
更多的内容和示例、练习请参考: http://www.hubwiz.com/course/562085141bc20c980538e25a/