コンセンサスは、TDDを実行するときにプライベートメソッドをテストしないことのようです。
プライベート/保護されたメソッドを単体テストする必要がありますか?
私はこれと同じシナリオを繰り返します。私はプライベートメソッドを持っています(例として、それはすべてのオプションをオフに切り替えます)。多くの状態を変更し、いくつかのパブリックメソッドによって呼び出されます。プライベートメソッドが状態に加える変更は、どのパブリックメソッドが呼び出されるかに関係なく同じままです(すべてのオプションがオフに設定されます)。
同じことを効果的に行う多くのテストを追加せずに、このプライベートメソッドの機能をテストするための最良の方法は何ですか?
ところで、私はQUnitを使用してJavascriptオブジェクトをテストしています。
これが私のクラスの過度に単純化されたバージョンです。
http://jsfiddle.net/twistedinferno/UMgAx/
編集
私がここで本当に尋ねようとしているのは、「プライベートメソッドをテストするべきかどうか」ではありません。それはすでに回答されており、その答えはノーです。私のプライベートメソッドを使用するため、アサーションの多くが同じになることを念頭に置いて、各パブリックメソッドをどのようにテストするのが最適かを知りたいです。同じプライベートメソッドが多くのパブリックメソッドによって呼び出されます。多くのパブリックメソッドのそれぞれがプライベートメソッドを呼び出すときに発生する状態変化をテストするために、重複するアサーションをたくさん持っていても大丈夫ですか?
テスト付きの新しいフィドル http://jsfiddle.net/twistedinferno/JHzWh/