我有一个我需要模拟的界面,它具有部分看起来像这样的索引器属性。
public interface MyInterface{
string this[string name] {get;set;};
string this[int index] {get;set;};
}
我想模拟界面,使得上面名称和索引的某些值返回我提供的值。如何使用Microsoft Fakes Framework实现这一目标?
答案 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);
}