2

次のようにロジックを実行する単体テストを作成しています。

SomeObject obj1 = new SomeObject();
obj1.SomeMethod(args);

内部SomeMethod:

public void SomeMethod(*Some Args*){     
    AnotherObject obj2 = new AnotherObject();
    Obj2.OtherMethod();
}

私のテストでは、 Obj2.OtherMethod() が実際に何をするかは気にしません。テストでそれを見落としたいと思っています。したがって、スタブを生成すると修正されると思いますが、その方法がわかりません。

4

1 に答える 1

3

これが1つのアプローチです。AnotherObject が実装したインターフェイス (たとえば IAnother など、少なくともメソッドとして AnotherMethod がある) がある場合、通常の実行パスは、AnotherObject のインスタンスを SomeMethod に渡します。

次に、テストのために、モック フレームワークを使用するか、自分でコーディングして、IAnother インターフェイスを実装するモック オブジェクトを渡すことができます。

したがって、次のようになります。

Public void SomeMethod(IAnother anotherObject)
{     
  anotherObbject.OtherMethod();
}

Public class MyMock : IAnother...

テスト用 -

IAnother another = new MyMock();
..SomeMethod(myMock)

しかし、実際のコードでは

IAnother = new AnotherObject()...

あなたはアイデアを得る。

于 2013-03-08T14:30:53.560 に答える