c# – 模拟具有不同签名的方法,其中一个具有Object作为参数类型
发布时间:2020-12-15 23:26:41 所属栏目:百科 来源:网络整理
导读:我有以下接口 public interface IInfo{ bool IsCompatibleWith (Object informationObject);}public interface IInfoT : IInfo{ bool IsCompatibleWith (T informationObject);} 并尝试做以下模拟 Foo f = new Foo();MockIInfoFoo infoMock = new MockIInfoF
我有以下接口
public interface IInfo { bool IsCompatibleWith (Object informationObject); } public interface IInfo<T> : IInfo { bool IsCompatibleWith (T informationObject); } 并尝试做以下模拟 Foo f = new Foo(); Mock<IInfo<Foo>> infoMock = new Mock<IInfo<Foo>>(); infoMock.Setup(i => i.IsCompatibleWith(f)).Returns(true); 然后测试运行以下行 IInfo mockedInfo; mockedInfo.IsCompatibleWith(f); 问题是,Setup方法设置IsCompatibleWith(T informationObject),而代码调用IsCompatibleWith(Object informationObject).如何设置两个签名? 解决方法
以下代码段显示了配置这两种方法的方法:
//configure the method with the `object` as a parameter infoMock.Setup(i => i.IsCompatibleWith((object)f)).Returns(true); //configure the method with the `IModel` as a parameter infoMock.Setup(i => i.IsCompatibleWith(f)).Returns(true); Moq按原样记录参数.将实例强制转换为object时,方法bool IsCompatibleWith(Object informationObject)将接受注册 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |