Mocha是一套JavaScript的測試框架(Test Framework),有Node.js和瀏覽器版本,可分別測試不同環境。

假設我們開發了一個JavaScript套件,我們希望可以在Node.js和不同瀏覽器上測試,可以用以下方法來達成。

1. 輸出至module或是window

在自己開發的JavaScript中,最後將程式依據環境輸出module或是全域變數,以下皆以js-md5為範例

;(function(root, undefined) {
  // ...
  if(typeof(module) != 'undefined') {
    module.exports = md5;
  } else if(root) {
    root.md5 = md5;
  }
}(this));

2. 建立測試網頁

建立測試網頁,例如tests/index.html,內容需包含以下項目(要注意順序):

<!-- mocha套件 start -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/mocha/2.1.0/mocha.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/mocha/2.1.0/mocha.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/expect.js/0.2.0/expect.min.js"></script>
<!-- mocha套件 end -->

<!-- mocha初始化 start -->
<div id="mocha"></div>
<script>
mocha.setup('bdd');
</script>
<!-- mocha初始化 end -->

<!-- 自己的套件與測試 start -->
<script src="../src/md5.js"></script> 
<script src="test.js"></script>
<!-- 自己的套件與測試 end -->

<!-- 執行測試 start -->
<script>
mocha.checkLeaks();
mocha.run();
</script>

3. 實作測試內容

在test.js中實作測試內容,依照mocha的框架寫法去撰寫,例如:

describe('less than 64 bytes', function() {
  it('should be successful', function() {
    expect(md5('')).to.be('d41d8cd98f00b204e9800998ecf8427e');
  });
});

完成後就可以開網頁看測試結果

螢幕快照 2015-01-07 下午8.37.35  

4. 安裝node.js版本的mocha與相關套件

我將mocha安裝於全域,以後不需重複安裝

# sudo npm install mocha -g
# npm install expect.js --save-dev

5. 建立node.js專用測試檔

例如建立node-test.js,加入以下項目

md5 = require('../src/md5.js');
expect = require('expect.js');
require('./test.js');

將test.js中需要用到的套件在node-test.js檔案中先行載入到全域變數,最後再載入test.js執行相同的測試項目。

之後就可以執行以下指令進行測試

# mocha node-test.js

或者在package.json中加入

"scripts": {
  "test": "mocha tests/node-test.js"
}

就可以執行以下指令代替

# npm test

螢幕快照 2015-01-07 下午8.37.05  

延伸閱讀

使用jscoverage計算Node.js程式覆蓋率

在Github上使用Travis CI進行持續整合 - Node.js

在Github上使用Coveralls顯示程式覆蓋率 - Node.js

相关文章