如何在C#中使用moq库设置通用方法
Interface IA
{
void foo();
void Get<T>();
}
[Fact]
public void SetupGenericMethod()
{
var mock = new Mock<IA>();
mock.Setup(x=> x.Get<It.IsAny<???>()>()
}
对此问题的任何帮助都非常感谢。非常感谢你的时间
答案 0 :(得分:0)
测试时,您应该知道测试应该是T
。使用类型进行设置。同样基于示例中的命名Get<T>
应返回一些内容。
Interface IA
{
void foo();
T Get<T>();
}
[Fact]
public void SetupGenericMethod()
{
var mockT = new Mock<FakeType>();
var mock = new Mock<IA>();
mock.Setup(x=> x.Get<FakeType>()).Returns(mockT.Object);
}
如果您确实在寻找Mocking generic method call for any given type parameter。那么这个问题的答案是放弃创建一个模拟,而是使用Stub,或者自己模拟界面而不是使用模拟框架。
答案 1 :(得分:0)
如果不需要执行与类型__HOST
相关的操作,可以从Moq 4.13(2019-09-01)起使用通用类型参数T
:< / p>
It.IsAnyType
完整示例:
mock.Setup(x => x.Get<It.IsAnyType>())