コンストラクター注入で依存性注入フレームワークを使用する場合、オプションのパラメーターを使用することは悪い習慣と見なされますか?
例:
public class ProductsController
{
public ProductsController(IProductService productService = null, IBackOrderService = null)
{
}
}
両方のパラメーターをオプションとして指定しましたが、私の DI フレームワークは常に両方の依存関係を注入します。新しい依存関係を必要とするコントローラーに新しいアクションを追加する場合、新しい依存関係をオプションにするのは悪いことですか? 既存のテストが新しい依存関係を必要としない場合でも、数十の単体テストを壊す可能性があります。
編集
人々は私の質問に混乱しているようです。Web アプリケーションで ProductsController を手動で構築することは決してありません。これは、コントローラー ファクトリ (依存関係を自動的に注入する) によって処理されます。
私が気に入らないのは、次のような単体テストを行うことです。
[Test]
public void Test1()
{
var controller = new ProductsController(new MockProductService(), new MockBackOrderService());
}
ここで、コントローラーに新しいアクション メソッドを追加することにしました。この新しいアクションには新しい依存関係が必要ですが、既存のアクションには必要ありません。ここで、新しいパラメーターを追加したため、戻って 100 の異なる単体テストを変更する必要があります。パラメータをオプションにすることでそれを回避できますが、それが悪い考えかどうか知りたかったのです。それが影響するのは単体テストだけなので、私の直感はノーと言います。