功能豐富的javascript測試框架:mocha
介紹
mocha 是一個功能豐富的javascript測試框架,可以運行在nodejs和瀏覽器環境,使異步測試變得簡單有趣。mocha 串聯運行測試,允許靈活和精確地報告結果,同時映射未捕獲的異常用來糾正測試用例。
支持TDD/BDD 的 開發方式,結合 should.js/expect/chai/better-assert 斷言庫,能輕松構建各種風格的測試用例。
特點
-
簡單
</li> -
靈活
</li> -
有趣
</li> </ul>安裝
通過npm全局安裝:
npm install -g mocha
第一個測試用例
我們首先來見識一下mocha最基本的測試用例是怎么的結構,如下:
測試用例:
//模塊依賴 var assert = require("assert"); //斷言條件 describe('Array', function(){ describe('#indexOf()', function(){ it('當值不存在時應該返回 -1', function(){ assert.equal(-1, [1,2,3].indexOf(5)); assert.equal(-1, [1,2,3].indexOf(0)); }); }); });
示例解析:
測試用例首先需要引用斷言模塊,如上文中var assert = require('assert');,代碼 assert.equal(-1, [1,2,3].indexOf(5)); 中使用的是assert.equal(actual, expected, [message]) 語法。作用等同于使用'=='進行相等判斷。actual為實際值,expected 為期望值。message為返回的信息。運行
Mocha:$ mocha
斷言
斷言(assert)指的是對代碼行為的預期。一個測試用例內部,包含一個或多個斷言(assert)。
斷言會返回一個布爾值,表示代碼行為是否符合預期。測試用例之中,只要有一個斷言為false,這個測試用例就會失敗,只有所有斷言都為true,測試用例才會通過。
比如上節示例中的:
assert.equal(-1, [1,2,3].indexOf(5)); assert.equal(-1, [1,2,3].indexOf(0));
實際值(-1)和期望值([1,2,3].indexOf(5))是一樣的,斷言為true,所以這個測試用例成功了。
mocha 允許開發者使用任意的斷言庫,當這些斷言庫拋出了一個錯誤異常時,mocha將會捕獲并進行相應處理。這意味著你可以利用如 should.js斷言庫、 Node.js 常規的 assert 模塊或其它類似的斷言代碼庫。以下是眾所周知的適用于Node.js或瀏覽器的斷言庫:
-
should.js
</li> -
expect.js
</li> -
chai.js
</li> -
better-assert
</li> -
assert:nodejs 原生模塊,在前文示例中我們有應用到。
</li> </ul>斷言庫
Chai 是一個非常靈活的斷言庫,它可以讓你使用如下三種主要斷言方式的任何一種:
-
assert:
</li> </ul>這是來自老派測試驅動開發的經典的assert方式。比如:
assert.equal(variable, "value");
-
expect:
</li> </ul>這種鏈式的斷言方式在行為驅動開發中最為常見。比如:
expect(variable).to.equal("value");
-
should:
</li> </ul>這也是在測試驅動開發中比較常用的方式之一。舉例:
variable.should.equal("value");
expect 的語法
expect 庫應用是非常廣泛的,它擁有很好的鏈式結構和仿自然語言的方法。通常寫同一個斷言會有幾個方法,比如 expect(response).to.be(true) 和 expect(response).equal(true)。以下列舉了 expect 常用的主要方法:
-
ok :檢查是否為真
</li> -
true:檢查對象是否為真
</li> -
to.be、to:作為連接兩個方法的鏈式方法
</li> -
not:鏈接一個否定的斷言,如 expect(false).not.to.be(true)
</li> -
a/an:檢查類型(也適用于數組類型)
</li> -
include/contain:檢查數組或字符串是否包含某個元素
</li> -
below/above:檢查是否大于或者小于某個限定值
</li> </ul>在課程開始講解什么是mocha的時說:mocha支持TDD/BDD 的 開發方式,結合 should.js、expect、chai、better-assert 斷言庫,能輕松構建各種風格的測試用例。
這里面有兩個知識點,一個是斷言庫,另一個是 TDD/BDD ,在線練習和更多mocha的內容學習可以去匯智網。
</div>
轉自:http://segmentfault.com/a/1190000003949229
-
-
-
-
-