Karma是Testacular的新名字,在2012年google開源了Testacular,2013年Testacular更名爲Karma。Karma是一個讓人感到很是神祕的名字,表示佛教中的緣分,因果報應,比Cassandra這種名字更讓人猜不透!javascript
Karma是一個基於Node.js的JavaScript測試執行過程管理工具(Test Runner)。該工具可用於測試全部主流Web瀏覽器,也可集成到CI(Continuous integration)工具,也可和其餘代碼編輯器一塊兒使用。這個測試工具的一個強大特性就是,它能夠監控(Watch)文件的變化,而後自行執行,經過console.log顯示測試結果。java
Jasmine是一個用來編寫Javascript測試的框架,它不依賴於任何其它的javascript框架,也不須要對DOM。它有擁有靈巧而明確的語法能夠讓你輕鬆的編寫測試代碼。chrome
好了,上面兩條都是我在網上找來的,用處不大。npm
接下來將展現我整個測試過程。json
首先的首先 初始化npm 輸入npm install瀏覽器
1.首先進入代碼所在目錄,安裝karma,使用命令框架
npm install --save-dev karma
其中 --save-dev將karma安裝到開發環境,會在package.json中添加一條編輯器
"devDependencies": { "karma": "^0.13.22" }
2.接着初始化karma,使用工具
karma init
選擇使用jasmine,一路回車,最後會生成一個文件karma.conf.js。測試
在karma.conf.js中設置要測試的目標js以及測試用例js的位置。這裏修改files的參數便可,個人配置以下。
// list of files / patterns to load in the browser files: [ 'js/**/*.js', 'test/**/*.js' ],
其中**表示匹配任意數目的任意字符,包括'/'
*也匹配任意字符,可是*不包括'/'。
最後在test中新建一個TestCase.js文件,用來編寫測試用例。
這是個人TestCase.js,我只測試了生成結果的正確性(本身構造分數表達式),
describe("A test case on function", function(){ it("test answer", function(){ var f = []; var a = new Fraction(1,3); f.push(a); f.push('+'); a = new Fraction(2,3); f.push(a); var i = []; i.push(f); expect(1).toEqual(outputFraction(normalizeFraction(showFormula(i)))); }); it("test answer", function(){ var f = []; var a = new Fraction(7,8); f.push(a); f.push('+'); a = new Fraction(2,3); f.push(a); var i = []; i.push(f); expect('37/24').toEqual(outputFraction(normalizeFraction(showFormula(i)))); }); it("test answer", function(){ var f = []; var a = new Fraction(1,3); f.push(a); f.push('-'); a = new Fraction(2,3); f.push(a); var i = []; i.push(f); expect('-1/3').toEqual(outputFraction(normalizeFraction(showFormula(i)))); }); });
這裏測試了三組數據,分別是1/3+2/3,7/8+2/3,1/3-2/3,手動計算結果傳入參數。
在cmd中輸入
karma start
後會自動運行chrome瀏覽器,而且給出測試結果,運行結果以下:
結果顯示 測試成功 3組測試數據均經過。
以上,是測試的整個過程。