这似乎是不可能的(而且可能是),但我正在尝试更多的 TDD,而且我一直在用闭包碰壁。说我有以下内容:
function createSomething(init) {
function privateMethod(param) {
return init[param]; //assuming this is more complicated, how can you test it?
}
function getData() {
return init.data;
}
function getValue(name) {
if (name === "privateNode" || typeof name !== "string") {
return "permissionDenied";
}
return privateMethod(name);
}
return {
getData : getData,
getValue: getValue
};
}
抛开这段代码可能不是我观点的最佳说明,并假设“privateMethod”比上面的要复杂得多,有没有办法对“privateMethod”之类的方法运行单元测试或者是你能做的最好的是测试createSomething创建的对象吗?我问是因为我的应用程序的大部分都隐藏在闭包中。我在这方面非常不了解,但在我看来,这是 javascript 和 tdd 的弱点。上面没有 tdd 的代码的小提琴在这里:http: //jsfiddle.net/QXEKd/