0

私は自分の問題のベストプラクティスを見つけようとしています。クラス内に新しいオブジェクトを作成する複数のメソッドがあります。

    public void ToBeTested()
    {
         ClassForExmaple classForExample = new ClassForExample();

         //Other logic.....
    }

    public void ToBeTested2()
    {
          ClassForExmaple2 classForExample2 = new ClassForExample2();

          //Other logic.....
    }

等.....

これらのオブジェクトは全部で約5つあり、コンストラクターインジェクションを使用する予定でしたが、これはかなり厄介なようです。それらのいくつかがあるので、代わりにプライベートプロパティを使用する必要がありますか、それとも別の方法がありますか?

私はこれを行っているので、これらの新しい呼び出しをモックアウトすることができます。

4

2 に答える 2

2

コンストラクタインジェクションを使用する必要があります。依存関係が多すぎるために厄介な場合は、テストしているクラスがそれほど多くのことを行わないように、コードを分割する必要があります。

クラスへの依存関係が多すぎるということは、おそらく単一責任の原則に従わないことを示しています。

そうは言っても、5つの依存関係(場合によっては)は問題ない可能性があります。

于 2012-06-21T10:46:32.717 に答える
2

この場合、各タイプのオブジェクトのインスタンスが1つあるように見えるため、コンストラクターインジェクションを使用するのは問題ないようです。そうでない場合は、クラスのコンストラクターにファクトリを挿入し、必要に応じてオブジェクトを作成できるようにすることができます。

私は私有財産をあざけるのを避けます。これに頼らなければならない場合、それは通常、テストフレームワークによりよく公開されるべきクラス内にテスト可能なコードを隠していることを意味します。外部に設定するパブリックプロパティを公開する方がよいでしょう。

于 2012-06-21T10:53:50.870 に答える