1

クラスのインスタンスに、そのクラスの他のプロパティを本質的に合計するプロパティがあります。「既知の」プロパティをモックしながら、インスタンスのメソッドを呼び出すにはどうすればよいですか?これは明らかに機能しませんが、うまくいけば私の質問が伝わります:

public void TestSum()
{
    // Arrange
    var classToTestInstance = new ClassToTest();
    classToTestInstance.MyProp1 = new Mock().Returns(5); // MyProp1 is private set;
    classToTestInstance.MyProp2 = new Mock().Returns(3); // Same

    // There's not really an Act here...

    // Assert; Total is the actual property I want to test
    classToTestInstance.Total.Should().Be(8);

}

実際のClassToTestをインスタンス化して、Totalテストの正しい状態にする関数を実行することはできますが、Total機能をテストするだけではありません。

4

1 に答える 1

3

実際のClassToTestをインスタンス化して、Totalテストの正しい状態にする関数を実行することはできますが、Total機能をテストするだけではありません。

いいえ。ただし、その機能を個別にテストする必要があると思われる場合は、同じオブジェクトの一部であってはなりません。

個人的には、まさにそれを実行します。オブジェクトを適切な状態にしてから、テストしTotalます。オブジェクトを適切な状態にするためにも使用する関数専用の単体テストをたくさん用意できることを忘れないでください。

元の動作をテストしながらこの動作をモックできるモックフレームワークは確かにいくつかありますがTotal、私は個人的に、テストしようとしているのと同じクラスをモックすることを避けます。実際、モックを使いすぎないようにします。それは適切な場所で素晴らしいですが、それが本物を使うのと同じくらい簡単であるところ(そしてその「本物」は別々にテストされます)私はそうします。

于 2013-03-24T19:29:38.793 に答える