2.1 测试框架php
目前,前端的测试框架不少,像QUnit、jasmine、mocha、jest、intern等框架,这些框架各有特色,简单描述下,感兴趣的能够具体研究:html
2.2 断言库前端
var chai = require('chai'); var assert = chai.assert; // typef assert === 'object' chai.should(); // 对Obejct.prototype进行拓展
2.3 mock库node
先来讲说为何须要mock吧:须要测试的单元依赖于外部的模块,而这些依赖的模块具备一些特色,例如不能控制、实现成本较高、操做危险等缘由,不能直接使用依赖的模块,这样状况下就须要对其进行mock,也就是伪造依赖的模块。例如在使用XMLHttpRequest时,须要模拟http statusCode为404的状况,这种状况实际很难发生,必然要经过mock来实现测试。jquery
2.4 test runnergit
function describe (text, fn) {
try {
fn.apply(...);
} catch(e) {
assert(text)
}
}
function fn () {
while (...) {
beforeEach();
it(text, function () {
assert();
});
afterEach();
}
}
function it(text, fn) {
...
fn(text)
...
}
function assert (expect, actual) {
if (expect not equla actual ) {
throw new Error(text);
}
}
function fn () {
...
}
function spy(cb) {
var proxy = function () {
...
}
proxy.called = false;
proxy.returnValue = '...';
...
return proxy;
}
var proxy = spy(fn); // 获得一个mock函数
4.1原则github
4.2 TDDapi
一句话简单来讲,就是先写测试,后写功能实现。TDD的目的是经过测试用例来指引实际的功能开发,让开发人员首先站在全局的视角来看待需求。具体定义能够查看维基;app
就我的而言,TDD不是一个技术,而是一种开发的指导思想。在目前互联网的开发环境下,业务开发很难作到TDD开发,一是由于须要更多时间编写单元测试用例;二是要求很是了解业务需求;三是要求开发人员有很强的代码设计能力。可是当咱们写组件、工具方法、类库的时候,TDD就能够获得很好地使用。框架
4.3 BDD
行为驱动开发要求更多人员参与到软件的开发中来,鼓励开发者、QA、相关业务人员相互协做。BDD是由商业价值来驱动,经过用户接口(例如GUI)理解应用程序。详见维基.