Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript上测试私有成员_Javascript_Extendscript - Fatal编程技术网

在javascript上测试私有成员

在javascript上测试私有成员,javascript,extendscript,Javascript,Extendscript,我一直在Adobe Extend Script Toolkit上做一个简单的项目,在私有成员上实现测试时遇到了问题。我提出了一个解决方案,将回调函数中的私有函数暴露给一个特殊函数。我不确定这是不是一个好的模式。我需要建议 模式如下: (function (global) { var Loader, Require, Modules; Require = 'Require Object'; Modules = 'Modules object'; Loader =

我一直在Adobe Extend Script Toolkit上做一个简单的项目,在私有成员上实现测试时遇到了问题。我提出了一个解决方案,将回调函数中的私有函数暴露给一个特殊函数。我不确定这是不是一个好的模式。我需要建议

模式如下:

(function (global) {
    var Loader, Require, Modules;

    Require = 'Require Object';
    Modules = 'Modules object';
    Loader = {};

    global.estk = global.estk || {};
    global.estk.loader = Loader;

    // This MUST be used for testing purposes only.
    // Use this to test for private members.
    global.estk.loader.__test__ = function (callback) {
        callback.call(this, {
            Require: Require,
            Modules: Modules,
            Loader: Loader
        });
    };
}($.global));
在我的测试文件中,我可以这样称呼暴露的隐私:

(function(global) {
    #include '../estk/loader.jsxinc';

    estk.loader.__test__(function (obj) {
        $.writeln(obj.Require);
        $.writeln(obj.Modules);
        $.writeln(obj.Loader);
    });
}($.global));

作为一般规则:如果您需要测试私有数据成员,您需要重新思考您的工作方式。您应该测试给定一组输入,输出是您期望的。这些输入应该在它们在面向公众的API中输入的相同位置输入

单元测试应该测试代码的公共接口。测试私有部分往往会导致脆弱的测试(当代码更改而不是结果更改时测试失败)

我也看到了

所以,直接回答你的问题:我不会说你的模式是好的。您不应该担心测试私有函数。测试行为,而不是方法。并非所有方法都需要测试