2010-02-09 111 views
5

我正在使用QUnit,它非常出色。Javascript沙盒单元测试

我已将我的JS应用程序包含在(function() {})();沙箱中。这隐藏了很多我不想公开的代码,但我也需要测试该代码。

这里是如何工作的一个例子:

(function() { 

    var PublicAPI = window.PublicAPI = {};   
    PublicAPI.publicFunction = function (foo) { 
     PrivateAPI.privateFunction(foo); 
     return 'bar'; 
    }; 

    var PrivateAPI = {}; 
    PrivateAPI.privateFunction: function (foo) { 
     // Make secret stuff that never gets returned to the public 
     // Could be an AJAX call. 
    } 

})(); 

所以在这里我可以很容易地单元测试PublicAPI.publicFunction,但如何将我测试PrivateAPI.privateFunction

回答

3

This similar question总结得非常好......最简单的方法是不处理私有方法,因为如果他们想要更改它们...公共方法就是需要测试的方法。如果你想测试你的内部函数,你需要留下一些钩子以便qunit能够找到。

1

你不能。没有办法从该范围之外访问它。你唯一的希望就是对它进行集成测试,即在使用你的内部函数的全局可用对象上测试函数。

更好的是:不要私人功能。有什么大不了的?