測試利器Mocha

介紹

mocha 是一個功能豐富的javascript測試框架,能夠運行在nodejs和瀏覽器環境,使異步測試變得簡單有趣。mocha 串聯運行測試,容許靈活和精確地報告結果,同時映射未捕獲的異經常使用來糾正測試用例。javascript

支持TDD/BDD 的 開發方式,結合 should.js/expect/chai/better-assert 斷言庫,能輕鬆構建各類風格的測試用例。java

特色node

  • 簡單
  • 靈活
  • 有趣

安裝npm

經過npm全局安裝:數組

npm install -g mocha

mocha001.png

第一個測試用例

咱們首先來見識一下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)。ui

斷言會返回一個布爾值,表示代碼行爲是否符合預期。測試用例之中,只要有一個斷言爲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
  • expect.js
  • chai.js
  • better-assert
  • assert:nodejs 原生模塊,在前文示例中咱們有應用到。

斷言庫

Chai 是一個很是靈活的斷言庫,它可讓你使用以下三種主要斷言方式的任何一種:

  • assert:

這是來自老派測試驅動開發的經典的assert方式。好比:

assert.equal(variable, "value");
  • expect:

這種鏈式的斷言方式在行爲驅動開發中最爲常見。好比:

expect(variable).to.equal("value");
  • should:

這也是在測試驅動開發中比較經常使用的方式之一。舉例:

variable.should.equal("value");

expect 的語法

expect 庫應用是很是普遍的,它擁有很好的鏈式結構和仿天然語言的方法。一般寫同一個斷言會有幾個方法,好比expect(response).to.be(true) 和 expect(response).equal(true)。如下列舉了 expect 經常使用的主要方法:

  • ok :檢查是否爲真
  • true:檢查對象是否爲真
  • to.be、to:做爲鏈接兩個方法的鏈式方法
  • not:連接一個否認的斷言,如 expect(false).not.to.be(true)
  • a/an:檢查類型(也適用於數組類型)
  • include/contain:檢查數組或字符串是否包含某個元素
  • below/above:檢查是否大於或者小於某個限定值

在課程開始講解什麼是mocha的時說:mocha支持TDD/BDD 的 開發方式,結合 should.js、expect、chai、better-assert 斷言庫,能輕鬆構建各類風格的測試用例。這裏面有兩個知識點,一個是斷言庫,另外一個是 TDD/BDD 。

更多的內容和示例、練習請參考: http://www.hubwiz.com/course/562085141bc20c980538e25a/

相關文章
相關標籤/搜索