c# - 具有多个约束的单个泛型参数的 Moq 方法

标签 c# unit-testing moq

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

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

尝试设置模拟(使用 Moq)时,我无法为 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 方法设置模拟?

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

再次感谢!

最佳答案

尝试

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

关于c# - 具有多个约束的单个泛型参数的 Moq 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57223581/

相关文章:

android - 可以模拟/测试 Android ViewBinding 交互吗?

c# - 为 MVC 应用程序模拟 System.Web.Routing 中的 RouteData 类

c# - 为什么最小起订量声称我的模拟的属性 setter 从未被调用,即使代码正在调用它?

c# - 如何将 .net 4.5 Async/Await 示例转换回 4.0

c# - 将 Nullable 转换为 ValueType

c# - RabbitMQ EventingBasicConsumer 丢失消息

c# - Entity Framework 在使用 Find() 时生成低效的选择

maven - 如何使用离线仪器生成Jacoco集成测试报告?

c# - 使用最小起订量验证自身调用了哪个方法?

python - FactoryBoy 将属性分配给 SubFactory 的属性