2016-07-26 42 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. 
     }); 
    }); 
    }); 
}); 

建议阅读基本的“介绍到单元测试”教程了解要做出什么断言。祝你好运!