1

私はこのようなメソッドを持っています:

public A Method(int a, int b){
    return new A().AMethod(a, b);
}

今、私はテストによってそれをテストしています。取得したオブジェクトは、AMethodに対して「a」と「b」を操作した後に期待値を持っていますが、私にとっては、これは最初のメソッドと内部のAMethodをテストしている統合テストのように見えます。新しいオブジェクトAを作成した後、「a」と「b」がAMethodに渡され、たとえば反転されない順序で渡されることを知るために、分離されたメソッドをテストするにはどうすればよいでしょうか。

4

2 に答える 2

1

いつでもモック フレームワークを使用してテストできます。つまりMOQフレームワークを使用してモックを作成します。パラメータをテストできます。こんなものでしょう

これは正確なコードではありませんが、いくつかのエラーがありますが、アイデアを得ることができます.

 var mocmethod = new Mock<IMethodA>(pass your parameters here)
mockmethod.setup=(x=>x.a(It.Isany<int>)......).Returns(A), 
mockmethod.Verify(r=>r.a(It.Is<int>(r=>r.b == "Something"), It.Is<int>(i=>i > 17)))
于 2013-02-05T03:55:07.663 に答える
0

私はここで2つの解決策を提案することができます:

  1. A工場依存関係を導入します。
    新しいAインスタンスを作成する責任は、サードパーティのインターフェイスに委任できます。たとえば、それは可能性がありますIAFactory。直接作成するのではなく、Method()このファクトリを使用して新しいインスタンスを作成する必要があります。 その場合、スタブできます:モックを返す必要があります。そして、適切なパラメータで呼び出されることをテストできます。AA
    IAFactoryAAMethod

  2. AMethod()実行結果をアサートします。
    例:インスタンスのAMethod()2つのプロパティ(PropAおよびPropB)を初期化するA場合、テストではそれらのプロパティに有効な値が含まれていることを確認する必要があります。
    その場合、テストでは、プロパティが実際にどのように初期化されるかは考慮されません。最終結果が期待どおりであることを確認するだけです。

于 2013-02-03T08:30:32.400 に答える