これは不可能のように思えます (そして、そうかもしれません) が、私はもっと 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/