如何使用MS Fakes为索引属性创建存根

时间:2013-03-05 18:34:03

标签: unit-testing microsoft-fakes

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

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

我想模拟界面,使得上面名称和索引的某些值返回我提供的值。如何使用Microsoft Fakes Framework实现这一目标?

1 个答案:

答案 0 :(得分:5)

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

生成的假组件将是" 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);
}