首页 > 解决方案 > 具有单个通用参数和多个约束的最小起订量方法

问题描述

我有以下方法签名,我想设置一个模拟:-

public int Update<T>(T item) where T : IItemID, IItemData

尝试设置模拟(使用最小起订量)时,我无法为 T 设置正确的类型:-

mock.Setup(x => x.Update(It.IsAny<???>()).Returns(1);

我在单元测试项目中尝试过使用“假”接口:-

public interface IFake : IITemID, IItemData
{
}

mock.Setup(x => x.Update(It.IsAny<IFake>()).Returns(1)

但是我的单元测试中的验证失败,因为我使用的对象不是从 IFake 继承的。该对象是从 IItemID 和 IItemData 继承的实际类型。

无论如何要为这个具有多个约束的 Update 方法设置模拟?

更新 感谢所有信息。再次经历这个之后,看起来最好的解决方案是不使用多个接口约束,因为这不能被模拟。我只是想知道是否有解决方案,因为这似乎会在以后引起大量问题。

再次感谢!

标签: c#unit-testingmoq

解决方案


尝试

mock.Setup(x => x.Update(It.IsAny<It.IsAnyType>()).Returns(1);

推荐阅读