【发布时间】:2021-06-25 08:38:58
【问题描述】:
如何在 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 种类型,我尽量避免嘲笑它们。 如果调用为任何类型返回 null ,测试就会中断(因为代码抛出和异常),这很遗憾是默认的非模拟行为。
【问题讨论】:
-
假设这是一个单元测试,你对任何类型的期望都有点宽泛。您至少应该知道测试的类型。这可能只是一个 xy 问题。你能展示类型和测试的实际表示吗?
-
T 是引用类型吗?即
where T: class?