5

我正在使用 QUnit,非常棒。

我已将我的 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呢?

4

2 回答 2

3

这个类似的问题总结得很好......最简单的是不处理私有方法,因为它们可以根据需要进行更改......公共方法是需要测试的方法。如果你想测试你的内部函数,你需要留下某种钩子让 qunit 能够找到。

于 2010-02-10T13:32:56.627 回答
1

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

更好的是:不要创建私有函数。有什么大不了的?

于 2010-02-10T13:37:42.480 回答