【发布时间】:2015-10-03 04:35:37
【问题描述】:
我有以下接口
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)。如何设置两个签名?
【问题讨论】:
-
嗨@user1039462,我的编辑被拒绝,我不得不指出
Mock<IInfo<IModel>> infoMock = new Mock<IInfo<Foo>>()无法编译(而不是编辑您的帖子),请将代码更改为Mock<IInfo<IModel>> infoMock = new Mock<IInfo<IModel>>()或@ 987654328@。另一件事标签mono应该替换为mocking标签。还有一件事,如果您需要对我的回答(如下)有任何澄清,请随时询问...... -
@Old Fox:做到了,感谢指出错误。
标签: c# unit-testing mocking nunit moq