2013-03-05 48 views
2

我有一个我需要模拟的接口,其索引属性部分看起来像这样。如何使用MS Fakes创建索引属性的存根

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

我想嘲笑接口,以便上面的名称和索引的某些值返回我提供的值。我如何通过Microsoft Fakes Framework实现这一目标?

回答

5

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

生成的伪装会是“TargetAssembly.Fakes”。在该程序集中,您将使用方法“ItemGetInt32”,“ItemGetString”,“I​​temSetInt32String”,“I​​temSetStringString”的类型“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); 
} 
+0

这应该被标记为答案,因为这是正确的。感谢Joshua的详细解答! – Erica 2014-08-01 17:52:43