測(cè)試是什么
為檢測(cè)特定的目標(biāo)是否符合標(biāo)準(zhǔn)而采用專(zhuān)用的工具或者方法進(jìn)行驗(yàn)證,并最終得出特定的結(jié)果。
首先它是一個(gè)檢驗(yàn),所以應(yīng)該只有pass或fail兩種情況。而檢驗(yàn)的對(duì)象應(yīng)該是某個(gè)接口或模塊,所以應(yīng)該調(diào)用它獲得一個(gè)結(jié)果。檢驗(yàn)這個(gè)結(jié)果就是單元測(cè)試的基本動(dòng)作。
目的
避免需求和開(kāi)發(fā)脫節(jié),保證代碼質(zhì)量,可維護(hù),可擴(kuò)展性及方便問(wèn)題的排查和后期的修正。
單元測(cè)試方法論
在單元測(cè)試中,常用的方法論有兩個(gè):TDD(測(cè)試驅(qū)動(dòng)開(kāi)發(fā))&BDD(行為驅(qū)動(dòng)開(kāi)發(fā))TDD&BDD。
斷言庫(kù)
所謂"斷言",就是判斷源碼的實(shí)際執(zhí)行結(jié)果與預(yù)期結(jié)果是否一致,如果不一致就拋出一個(gè)錯(cuò)誤。所有的測(cè)試用例(it 塊)都應(yīng)該含有一句或多句的斷言。它是編寫(xiě)測(cè)試用例的關(guān)鍵。
- better-assert TDD
- should.JS BDD
- expect.js BDD
- chai.js 雙模 TDD BDD
- jasmine.js BDD
自動(dòng)化單元測(cè)試
- karma 自動(dòng)化rnner 集成PhantomJS無(wú)刷新 安裝
->~ npm i jasmine-core --save-dev
->~ npm i karma --save-dev
->~ npm i karma-coverage --save-dev
->~ npm i karma-jasmine --save-dev
->~ npm i karma-phantomjs-launcher --save-dev
->~ npm i karma-babel-preprocessor --save-dev
->~ npm i babel-preset-env --save-dev
karma.conf.js 修改
preprocessors: {
'./**/*.js': ['coverage']
},
coverageReporter: {
type: 'html',
dir: 'coverage/'
},
reporters: ['progress', 'coverage'],
在項(xiàng)目下創(chuàng)建目錄tests并編寫(xiě)測(cè)試代碼
- 編寫(xiě)代碼運(yùn)行
tests/index.js
window.test = function (num) {
return num + 1
}
tests/index.spec.js
describe('測(cè)試test 函數(shù)', function () {
it('+1 測(cè)試', function () {
expect(test(1)).toBe(2)
})
})
運(yùn)行測(cè)試
karma start
運(yùn)行 ok

運(yùn)行有錯(cuò)誤
修改index.spec.js
describe('測(cè)試test 函數(shù)', function () {
it('+1 測(cè)試', function () {
expect(test(1)).toBe(4)
})
})
運(yùn)行測(cè)試
karma start

覆蓋率 coverage
打開(kāi)coverage目錄index可查看,如圖:
