在JS中测试私有原型方法

时间:2014-08-07 05:36:37

标签: javascript unit-testing prototype private

我想知道是否有可能在js中测试原型的私有方法。我怀疑这是不可能的,但也许有人会让我感到惊讶......

例如,假设我有以下课堂餐厅:

function Restaurant() {
}

Restaurant.prototype = (function() {
    var private_stuff = function() {
    // Private code here
    };

    return {

        constructor:Restaurant,

        use_restroom:function() {
            private_stuff();
        }

    };
})();

是否可以为private_stuff方法编写单元测试?我使用茉莉花进行单元测试,但我想这并不重要。

谢谢, 利奥尔

1 个答案:

答案 0 :(得分:0)

上次我遇到类似的事情,我不得不专门暴露私人的东西,听起来很奇怪:

function Restaurant() {
}

Restaurant.prototype = (function() {
    var private_stuff = function() {
    // Private code here
    };

    var internalMethods = {};
    if (window.exposeInteralMethods) {
      internalMethods = {
        private_stuff: private_stuff
      };
    }

    return {   
        internalMethods: internalMethods,
        constructor:Restaurant,    
        use_restroom:function() {
            private_stuff();
        }

    };
})();

如果有人除了你之外设置window.exposeInteralMethods,你就有风险,但有时需要2x4调试squirmware。