最近在打算將之前的代碼進行重構,過程當中發現本身不寫自動化測試代碼,而是手動的寫,這樣並很差,因此就學了Karma+Jasmine的自動化單元測試,之後寫代碼儘可能要寫自動化單元測試,也要測一下istanbul代碼覆蓋率。javascript
據我瞭解,Nodejs領域: Jasmine作單元測試,Karma自動化完成單元測試,Grunt啓動Karma統一項目管理,Yeoman最後封裝成一個項目原型模板,npm作nodejs的包依賴管理,bower作javascript的包依賴管理。html
Karma是一個基於Node.js的JavaScript測試執行過程管理工具(Test Runner)。該工具可用於測試全部主流Web瀏覽器,也可集成到CI(Continuous integration)工具,也可和其餘代碼編輯器一塊兒使用。這個測試工具的一個強大特性就是,它能夠監控(Watch)文件的變化,而後自行執行,經過console.log顯示測試結果。java
個人開發環境:node
一、全局安裝karma、Jasmine-core、Karma-Jasminegit
npm install -g karma
npm install -g Jasime-core
npm install -g karma-Jasmine
複製代碼
二、局部局安裝karma、Jasmine-core、Karma-Jasminegithub
npm install --save-dev karma
npm install --save-dev Jasime-core
npm install --save-dev karma-Jasmine
複製代碼
三、測試是否安裝成功chrome
karma start
複製代碼
四、Karma + Jasmine配置npm
karma init
複製代碼
1). 建立源文件:用於實現某種業務邏輯的文件,就是咱們平時寫的js腳本 有一個需求,要實現單詞倒寫的功能。如:」ABCD」 ==> 「DCBA」瀏覽器
//src/index.js
function reverse(word){
return word.split("").reverse().join("");
}
複製代碼
2). 建立測試文件:符合jasmineAPI的測試js腳本bash
//test/test.js
describe("A suite of basic functions", function() {
it("reverse word",function(){
expect("DCBA").toEqual(reverse("ABCD"));
});
});
複製代碼
3). 修改karma.conf.js配置文件 咱們這裏須要修改:files和exclude變量
files: ['./src/*.js'],
exclude: ['karma.conf.js'],
複製代碼
4). 啓動karma 單元測試全自動執行
karma start karma.conf.js
複製代碼
一、全局安裝istanbul依賴karma-coverage
npm install -g karma-coverage
複製代碼
二、局部安裝istanbul依賴karma-coverage
npm install --save-dev karma-coverage
複製代碼
三、修改karma.conf.js配置文件
reporters: ['progress','coverage'], preprocessors : {'src.js': 'coverage'}, coverageReporter: { type : 'html', dir : 'coverage/' } 四、啓動karma start
在工程目錄下面找到index.html文件,coverage/chrome/index.html
接下來,咱們修改src.js,增長一個if分支
function reverse(word){
if(word=='AAA') return "BBB";
return word.split("").reverse().join("");
}
複製代碼
再看覆蓋率報告,降低得有點恐怖
千萬記住要先全局安裝再局部安裝,否則總是報錯:jasmine-core模塊未找到
原文:搭建Karma+Jasmine的自動化單元測試,歡迎star,歡迎交流。
項目地址KarmaDemo