接口上的最小起订量通用方法设置

sap*_*ire 5 c# unit-testing moq

如何使用 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<???>()>()
}
Run Code Online (Sandbox Code Playgroud)

Nko*_*osi 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);
}
Run Code Online (Sandbox Code Playgroud)

如果您实际上正在寻找任何给定类型参数的模拟泛型方法调用。那么这个问题的答案是放弃创建模拟并使用 Stub 或者自己模拟接口而不是使用模拟框架。