2

我有一个需要模拟的接口,它的索引器属性部分看起来像这样。

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

我想模拟接口,以便上面的 name 和 index 的某些值返回我提供的值。如何使用 Microsoft Fakes Framework 实现这一目标?

4

1 回答 1

6

您可以简单地利用 Microsoft Fakes 在测试中存根此功能。右键单击您的目标程序集(包含接口定义的项目),然后在测试项目的引用中选择添加 Fakes 程序集。

生成的假程序集将是“TargetAssembly.Fakes”。在该程序集中,您将有一个类型为“StubMyInterface”的方法,“ItemGetInt32”、“ItemGetString”、“ItemSetInt32String”、“ItemSetStringString”,这是 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 回答