私はSqlConnection
が静的メソッドを介して作成されるプロジェクトに取り組んでいます、それはDatabaseAccess.GetSqlConnection()
だとしましょう。このメソッドは、.configファイルを読み取って接続文字列を取得し、接続を作成します。
実際の接続の作成を担当するISqlConnectionCreator
(またはISqlConnectionFactory
)を使用するようにコードをリファクタリングしても大丈夫ですかテストのためだけに(もっと見えるように "私のための本」)または簡単にして、テスト接続文字列を含むテストプロジェクトで.configファイルを作成しますか?
2番目のソリューションは、エラーが発生しやすく、テストとテストされたクラスの間に間接的な関係を作成します。
注入された接続クリエーターを使用するためにコードをリファクタリングするという追加の作業が正当化されることを確認したいと思います。
実用的な観点から、メンテナンスの労力を最小限に抑えて、最も機能するものを使用することをお勧めします。
この特定の状況では、おそらく「オプション3」を使用します。接続文字列を読み取る部分と、実際の接続を作成する部分を2つの異なる方法に分離します。したがって、接続文字列はメソッド2の入力パラメーターになり、テストコードでは、構成の評価を省略して、ハードコードされたテストデータの一部など、好きな方法でテスト接続文字列を提供できます。その結果、テスト構成ファイルもISqlConnectionCreator
も必要ありません。