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