Javascript沙盒单元测试

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

2个回答

3

这个类似的问题已经很好地总结了...最简单的方法是不去处理私有方法,因为它们可以随意更改...需要测试的是公共方法。如果您想要测试内部函数,则需要留下某种钩子以便qunit能够找到。


1

你没法从作用域外部访问它。你唯一的希望是进行集成测试,即测试使用内部函数的全局可用对象上的函数。

更好的方法是不要创建私有函数。这有什么大不了的呢?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接