淺談單元測試mocha + should.js
為什麼要進行單元測試?
測試常常是程式設計師十分厭倦的一個活動。測試能給我們帶來什麼?瞭解這些是非常重要的,測試不可能保證一個程式是完全正確的,但是測試卻可以增強我們對程式完整的信心,測試可以讓我們相信程式做了我麼期望它做的事情。測試能夠使我們儘早的發現程式的 bug 和不足。一個 bug 被隱藏的時間越長,修復這個 bug 的代價就越大。
最近在學習中學習到了mocha這個測試工具,下面就來簡單介紹一下:
mocha
mocha是JavaScript的一種單元測試框架,既可以在瀏覽器環境下執行,也可以在Node.js環境下執行。
使用mocha,我們就只需要專注於編寫單元測試本身,然後,讓mocha去自動執行所有的測試,並給出測試結果。
mocha的特點主要有:
-
既可以測試簡單的JavaScript函式,又可以測試非同步程式碼,因為非同步是JavaScript的特性之一;
-
可以自動執行所有測試,也可以只執行特定的測試;
-
可以支援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的具體運用。
參考文件: