Javascript 如何在自执行匿名函数中测试私有函数?

Javascript 如何在自执行匿名函数中测试私有函数?,javascript,qunit,Javascript,Qunit,函数private()只能在cls范围内访问 如何测试它 在我看来,唯一的选择是将其定义为公共的 var cls = (function() { function private() { return 'private'; } return { public: function() { console.log(private()); return 'public'; }

函数
private()
只能在
cls
范围内访问

如何测试它

在我看来,唯一的选择是将其定义为公共的

var cls = (function() {
    function private() {
        return 'private';
    }
    return {
        public: function() {
            console.log(private());
            return 'public';
        }
    }
})();

QUnit.test('public test', function(assert) {
    assert.ok(cls.public() === 'public');
});

QUnit.test('private test', function(assert) {    
    assert.ok('How to access to the cls.private ?' === 'private');
});

在这种情况下,它将是可调用的,我希望避免这种情况。

您应该测试接口而不是实现。不要测试您的私有方法。您的测试应该表示您的公共接口的使用情况。测试使用私有函数的公共接口。如果
private
是一个“fat”函数,我需要确保其可操作性?可能存在任何反射库?@cetver:什么是fat函数?你应该测试接口而不是实现。不要测试你的私有方法。你的测试应该代表你的公共接口的使用情况。测试使用私有函数的公共接口。如果
private
是一个“fat”函数,我需要确保其可操作性?可能存在任何反射库?@cetver:什么是fat函数?
return {
    _private: function() {
        return 'private';
    }
}