simple, flexible, fun — Mocha

甚麼是 Mocha ?

寫程式就一定搭配測試,測試的重要性已經是一個無庸置疑的議題。今天主要介紹一個 JavaScript 中很多人使用,也非常好用的測試框架,Mocah。 Mocha 的主要作者是 Node.js 裡的名人 TJ Holowaychuk,他也是 express 就是他的主要貢獻者。

Mocha 預設是採用 BDD(Behavior Driven Development) 模式,從 user story 出發來編寫測試程式。BDD 是 agile 或者 scrum 的開發流程典型的測試方法。但現在的 Mocha 不只可以 BDD,也可以用在 TDD(Task Driven Development) 的模式下。

Mocha 支持同步與非同步的測試,也支持直接在瀏覽器環境與後端環境下測試。是個非常廣泛而好用的測試框架。

第一個 Mocha Example

1
2
3
4
5
6
7
8
9
var assert = require('chai').assert;
describe('Array', function() {
describe('#indexOf()', function () {
it('should return -1 when the value is not present', function () {
assert.equal(-1, [1,2,3].indexOf(5));
assert.equal(-1, [1,2,3].indexOf(0));
});
});
});

這邊使用官網的範例來解釋,一個最基礎的測試程式長這樣,主要由三個部分組成:

  • describe (moduleName, testDetails):用來描述 User Story 所需要測試的 task。
    上面這個範例的意思就是說,用來測試 Array 中的 indexOf(),不過具體可以由開發者取一個清楚明白的名稱就好。
  • it (info, function):一個 it 對應一個 test case,用 info 描述所測試的內容。
  • assert.equal (exp1, exp2):判斷結果,mocha 通常會搭配 chai 使用,用來判斷結果是否滿足需求。
1
2
3
4
5
$ mocha

.

1 test complete (1ms)

使用 mocha 執行寫測試檔案,就會運行測試腳本。如果搭配框架使用的話,也可以利用 npm script 執行。結果顯示會透過 ‘.’ 表示測試成功, ‘F’ 表示測試失敗,最後總結本次的測試情況。

Reference

[1] Mocha.js
[2] 带你入门带你飞Ⅰ 使用Mocha + Chai + Sinon单元测试Node.js
[3] 测试框架 Mocha 实例教程


License


本著作由 Chang, Wei-Yaun (v123582) 製作,
創用CC 姓名標示-相同方式分享 3.0 Unported授權條款釋出。