我有一个具有以下方法的接口:
public interface IRepo
{
IA<T> Reserve<T>();
}
我希望能够模拟包含此方法的类,而无需为它可能使用的每种类型都指定设置方法。理想情况下,我只想让它返回一个 new mock<T>.Object
。
我该如何实现这一点?
看起来我的解释不够清楚。以下是一个示例 - 当我指定 T(这里是字符串)时,现在就可以实现:
[TestMethod]
public void ExampleTest()
{
var mock = new Mock<IRepo>();
mock.Setup(pa => pa.Reserve<string>()).Returns(new Mock<IA<string>>().Object);
}
我希望实现的是像这样的效果:
[TestMethod]
public void ExampleTest()
{
var mock = new Mock<IRepo>();
mock.Setup(pa => pa.Reserve<T>()).Returns(new Mock<IA<T>>().Object);
// of course T doesn't exist here. But I would like to specify all types
// without having to repeat the .Setup(...) line for each of them.
}
在测试对象的某些方法中,可能会调用三到四种不同类型的reserve。如果我必须为每个测试设置所有类型,那么我就需要编写很多设置代码。但是在单个测试中,我并不关心它们中的所有类型,我只需要非空的模拟对象,除了我实际正在测试的对象(对于这个对象,我很乐意编写更复杂的设置)。