我有以下方法签名,我想设置一个模拟:-
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/