1. 程式人生 > >淺談單元測試mocha + should.js

淺談單元測試mocha + should.js

為什麼要進行單元測試?

測試常常是程式設計師十分厭倦的一個活動。測試能給我們帶來什麼?瞭解這些是非常重要的,測試不可能保證一個程式是完全正確的,但是測試卻可以增強我們對程式完整的信心,測試可以讓我們相信程式做了我麼期望它做的事情。測試能夠使我們儘早的發現程式的 bug 和不足。一個 bug 被隱藏的時間越長,修復這個 bug 的代價就越大。

最近在學習中學習到了mocha這個測試工具,下面就來簡單介紹一下:

mocha

mocha是JavaScript的一種單元測試框架,既可以在瀏覽器環境下執行,也可以在Node.js環境下執行。

使用mocha,我們就只需要專注於編寫單元測試本身,然後,讓mocha去自動執行所有的測試,並給出測試結果。

mocha的特點主要有:

  1. 既可以測試簡單的JavaScript函式,又可以測試非同步程式碼,因為非同步是JavaScript的特性之一;

  2. 可以自動執行所有測試,也可以只執行特定的測試;

  3. 可以支援before、after、beforeEach和afterEach來編寫初始化程式碼

編寫測試

首先我們全域性安裝mocha:

sudo npm install -g mocha

我們建立exercise2工程來編寫test.js以及相關測試。工程構建如下:

在nodejs中Assert模組提供了簡單的斷言測試功能;在此工程中我們使用擁有相同功能的should.js

來進行測試:

npm install should.js --save-dev

然後我們在add.js中編寫並匯出一個簡單的求和函式:

function add(...rest) {
    var sum = 0, err = 0;
    for (let n of rest) {
        var num = Number(n);
        if(isNaN(num)){
            err++;
        }else{
            sum += num;
        }
    }

    if(err){
        sum = '請輸入數字';
    }
    return sum;
};


module.exports = add

接著在test.js中編寫測試用例

var add = require('../lib/add')

describe('數字相加add方法', function () {

  it('1加上2等於3', function () {
    add(1, 2)
      .should.equal(3)
  })
  it('字串"42329"加上字串"21532"等於"63861"', function () {
    add('42329', '21532')
      .should.equal(63861)
  })
  
  it('"1"加上"w"等於"請輸入數字"', function () {
    add('1', 'w')
      .should.equal('請輸入數字')
  })
})

在packge.json中配置:

"scripts": {
    "test": "mocha"
  },

然後在在命令列中執行:

npm test

// 或者直接mocha

然後就可以看到

蹬蹬~ 測試通過

至此,一個簡單的mocha + should.js單元測試就完成了。

當然mocha測試的功能還有很多,有待我們繼續深入學習,如 :非同步測試、 HTTP測試等。

具體可以移步到mocha的官方網站,或者看看廖雪峰老師官方網站的javascript教程,裡面詳細的介紹了mocha的具體運用。

參考文件: