gpt4 book ai didi

c# - Moq - 设置通用返回类型

转载 作者:行者123 更新时间:2023-12-05 05:59:30 26 4
gpt4 key购买 nike

如何在 Moq 中设置通用返回类型?

我有以下界面:

public interface IFoo
{
T Bar<T>();
}

现在我要设置 Bar<T>()在测试中工作

var foo = new Mock<IFoo>();
foo.Setup(x => x.Bar<It.IsAnyType>()).Returns(new Mock<???>().Object);

如何填写??? ,或者如果那不可能,那么我该如何返回通用模拟?

有 100 多种类型,我尽量避免 mock 它们。如果调用为任何类型返回 null,则测试中断(因为代码抛出异常),遗憾的是这是默认的非模拟行为。

最佳答案

如果T是引用类型即

public interface IFoo {
T Bar<T>() where T : class;
}

然后创建一个 slim 的模拟会更容易

public class MockFoo : IFoo {
private MockFoo() {

}

public T Bar<T>() where T : class => Mock.Of<T>();

public static IFoo New() => new MockFoo();
}

可以在安排测试和使用 MOQ 模拟 Bar 的输出时初始化

//Arrange
IFoo foo = MockFoo.New();

//...

关于c# - Moq - 设置通用返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68127999/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com