2016-07-26 56 views
-1

我製作了一個我想寫測試用例的小型庫。請注意,這是我第一次寫單元測試用例:)用摩卡測試一個模塊化的JavaScript代碼

我的圖書館是一個小型圖表庫,它使用d3.js繪製圖表。這是使用模塊行話這樣寫在下面200線代碼(只是一個示例):

var graph = (function() { 
var a, b, c; 

function x() { 
    //uses a 
} 

function y() { 
    uses a, b and possibly calls x 
} 

function plotChart() { 
    //uses c; 
}, 

function plotAxis() { 
    //uses a,b 
} 

function validate() { 
    //validates values 
} 

return { 
    createChart: function(options) { 
     //calls validate, 
     //calls plotChart 
     //calls plotaxis 
     . 
     . 
     . 
     . 

    } 
} 

什麼是先從單元測試這個還挺代碼的最佳方式。大多數像a,b,c,plotGraph,plotAxis等功能都是私人功能,不會暴露給外部世界。

另外,摩卡是不錯的選擇?我的目標是嘗試單元測試,然後通過深入研究獲得經驗。請建議。

+0

有人關心評論投票結案? – beNerd

+0

你公開的API是什麼?開始測試。戰略外部通常有助於從誰將使用你的圖書館的角度對其進行測試。 – MarcoL

+0

沒錯。所以我只公開了一個公共方法'createChart',它需要幾個選項。那麼不需要測試私有方法? – beNerd

回答

0

摩卡適合這個。瀏覽器樣板請參見docs;我建議使用Karmakarma-mocha或類似的工具來自動執行此操作。由於Mocha不包含斷言庫,因此您還需要包含斷言庫; Chai是一個熱門的選擇。

Jasmine在語法上與Mocha + Chai類似。它更像是一個「全合一」的框架。

假設是一個全局變量(分配給window.graph),你可以寫一個測試,如在任一茉莉花或摩卡如下:

describe('graph', function() { 
    describe('method', function() { 
    describe('createChart()', function() { 
     it('should return x', function() { 
     var retval = graph.createChart(); 
     // assert return value 
     }); 

     it('should throw an exception if y', function() { 
     // assert exception thrown when called with some params 
     }); 

     it('should mutate z', function() { 
     // etc. 
     }); 
    }); 
    }); 
}); 

建議閱讀基本的「介紹到單元測試」教程瞭解要做出什麼斷言。祝你好運!