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)理解應用程序。詳見維基.