2

部分的にこのように見えるインデクサー プロパティを持つ、モックする必要があるインターフェイスがあります。

 public interface MyInterface{         
     string this[string name] {get;set;};
     string this[int index] {get;set;};
 }

上記の名前とインデックスの特定の値が指定した値を返すように、インターフェイスをモックアウトしたいと思います。Microsoft Fakes Framework でこれを実現するにはどうすればよいですか?

4

1 に答える 1

6

Microsoft Fakes を利用して、テストでこの機能をスタブすることができます。ターゲット アセンブリ (インターフェイス定義を含むプロジェクト) を右クリックし、テスト プロジェクトの参照で [Fakes アセンブリの追加] を選択します。

生成される Fake アセンブリは、"TargetAssembly.Fakes" になります。そのアセンブリには、メソッド「ItemGetInt32」、「ItemGetString」、「ItemSetInt32String」、「ItemSetStringString」を持つタイプ「StubMyInterface」があり、これは 3 つの get/set メソッドのスタブ実装です。

次のようにテストで使用できます。

[TestMethod]
public void MyInterfaceTest()
{
    var stub = new StubMyInterface()
    {
        ItemGetInt32 = (x) => { return "teststring"; }
    };

    MyInterface SUT = stub;
    var result = SUT[47];

    Assert.AreEqual("teststring", result);
}
于 2013-05-14T23:46:13.360 に答える