2012-03-08 3 views
1

クラス/オブジェクトの内部配線をテストする必要がある場合、誰もが遭遇すると思います。コンパイルされた言語では、これは条件付きコンパイルによって行うことができます。これは私がJavaScriptのためにすべきことですか?そのようなタスクを達成するための通常の方法は何ですか?たぶん私はクラス/オブジェクトをブラックボックスとして扱い、その結果だけをテストするべきでしょうか?ユニットテストでは、私は内部ロジック(プライベートロジック)を頻繁にテストする必要がありますが、これのベストプラクティスは何ですか?

答えて

2

試験対象の公約(つまり、あなたが言及したブラックボックステスト)ほとんどの時間は十分であるべきです。パブリックメンバーの適切なテストカバレッジは、プライベート/内部の大部分を同様に実行する必要があります。結局のところ、あなたのクラスのユーザ(他のプログラマ、他のオブジェクト/共同作業者)は、あなたのオブジェクトが何をするのを気にするのでしょうか

内部をテストする必要性が高いときには、改善の機会として扱います。通常、このようなニーズは、code communicatingの結果です。「私は非公開にしてはいけません」「別の人に私をリファクタリングする価値があるかもしれません」

また、内部のテストでは、より脆いというテストが行​​われることに注意してください。あなたのオブジェクト/クラスの機能(契約)は変わらないかもしれませんが、実装はかなり頻繁に変わるかもしれません。自分のコードをサードパーティ製/外部ライブラリと置き換えることを考えてください(かなり一般的な変更) - これがテストを中断する理由ですか?そうではない。

私は時々あなただけの内部をテストする必要が実現する - しかし、IMO、それはその後、停止して、あなたのコードを改善することができるかどうかだと思う方が良いでしょう(非常に頻繁にすることができます実際にあなたを見つけることができます!)。他のすべてが失敗したときの最後の手段として、テスト内部をテストします。

関連する問題