2017-12-14 14 views
0

関数の単体テストを書く。入力に応じて、関数はいくつかの他の関数を呼び出します。テスト境界:関数が別の関数を呼び出しているかどうかを確認するか、この別の関数の結果を確認する

は私が

  1. モックによって呼び出される関数を期待されるふるまいを検証し、それらが呼び出される(またはしないと呼ばれる)されている場合に予想される引数
  2. で確認するか、これらの他の機能の結果を確認することができます

私は、これらの他の機能の結果が、それに対応するテストでテストされるべきだと考えているので、#1が好きです。しかし、私の同僚は#2を好む。

誰かがこれを支配する原則を私に助けてくれますか?

答えて

0

オプション1は、結果自体がテストするのが難しい場合は問題ではありません。しかし、オプション2が望ましい。どうして?

オプション1は実装の詳細をテストするためです。これにより、これらの詳細がロックダウンされます。

オプション2は実装を無視しています。これにより、デザインの変更がサポートされます。

結果をテストすることができれば、各ユニットのテストを書く必要はありません。 TDDでソリューションを成長させると、生産コードがより大きな機能として開始される可能性があります。各リファクタリングはテストによってサポートされます。たぶん、他の機能を抽出するかもしれない。たぶん私たちはクラス全体を抽出するでしょう。誰が言えるの? TDDでは、これらの決定を延期することができます。私たちは心を変えることすらできます。

関連する問題