Javascriptでモジュールパターンを使用して、私のパブリックインターフェイスとプライベート実装を分離しています。私がやっていることを単純化するために、私のコードはチャートを生成します。JavaScriptのプライベート関数をテストする
var Graph = function() {
var private_data;
function draw_legend() { ... }
function draw_plot() { ... }
function helper_func() { ... }
...
return {
add_data: function(data) {
private_data = data;
},
draw: function() {
draw_legend()
draw_plot()
}
}
}
一部の人々は唯一の理にかなって、あなたのクラスのパブリックインターフェイスを、テストを提唱、私は思います:チャートは、複数の部品(車軸、ラベル、プロット、伝説など)で構成されて私のコードは次のようになりますいくつかのテストでコンポーネントのそれぞれを個別にテストするのが本当に好きです。私がdraw_legend()関数を使いこなせば、私はそのテストを失敗させたいと思います。public draw()関数のテストではありません。私は間違ったトラックにいますか?
私は、レジェンドクラスを作るなど、異なるクラスの各コンポーネントを分離することができました。しかし、時にはわずか5〜10行のコードのためのクラスを作成することは愚かなようです。私はたくさんの私的な状態を渡す必要があるので、醜いでしょう。私はヘルパー機能をテストすることができません。とにかくこれをやるべきでしょうか?私はそれを吸うと公共のドロー()のみをテストする必要がありますか?または、他の解決策がありますか?
これは役に立つかもしれません[どのようにJavaScriptでユニットテストプライベート関数へ](http://philipwalton.com/articles/how-to-unit-test-private-functions-in-javascript/) – amirnissim