搭建Karma+Jasmine的自動化單元測試

最近在打算將之前的代碼進行重構,過程當中發現本身不寫自動化測試代碼,而是手動的寫,這樣並很差,因此就學了Karma+Jasmine的自動化單元測試,之後寫代碼儘可能要寫自動化單元測試,也要測一下istanbul代碼覆蓋率。javascript

據我瞭解,Nodejs領域: Jasmine作單元測試,Karma自動化完成單元測試,Grunt啓動Karma統一項目管理,Yeoman最後封裝成一個項目原型模板,npm作nodejs的包依賴管理,bower作javascript的包依賴管理。html

Karma的介紹

Karma是一個基於Node.js的JavaScript測試執行過程管理工具(Test Runner)。該工具可用於測試全部主流Web瀏覽器,也可集成到CI(Continuous integration)工具,也可和其餘代碼編輯器一塊兒使用。這個測試工具的一個強大特性就是,它能夠監控(Watch)文件的變化,而後自行執行,經過console.log顯示測試結果。java

Karma的安裝

個人開發環境:node

  • win7 64bit,
  • node v8.11.2
  • npm 5.6.0

一、全局安裝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
複製代碼

Karma和istanbul代碼覆蓋率

一、全局安裝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

參考: Error: Cannot find module 'jasmine-core'

相關文章
相關標籤/搜索