RhinoMock说:“类型不匹配的返回类型”
问题描述:
我写这样的类:RhinoMock说:“类型不匹配的返回类型”
public class A
{
public virtual int LowLimit { get; set; }
internal virtual bool CheckLimit(int measurement)
{
return LowLimit <= measurement;
}
}
并为它的测试:
MockRepository mocks = new MockRepository();
var limit = mocks.StrictMock<A>();
Expect.Call(limit.CheckLimit(2)).Return(true).Repeat.Once();
mocks.ReplayAll();
limit.CheckLimit(2);
mocks.VerifyAll();
它失败: 系统.InvalidOperationException:类型'System.Boolean'与方法'A.get_LowLimit();'的返回类型'System.Int32'不匹配
但是,当我将CheckLimit方法的内部关键字替换为public时,它工作正常。 为什么它会这样呢?
答
如果您使用外部库(StrictMock),那么它无法访问任何内部方法。
它看起来像StrictMock实现正试图用A的CheckLimit,而是因为它无法找到一个实现可能使用它自己的实现它采用的LowLimit时。
奇怪。如果它不能访问CheckLimit,它是如何知道CheckLimit在里面使用LowLimit的?什么是解决方案?我需要有内部的关键作品:( – Archeg
啊,无论如何,我得到它,所以谢谢。我已经添加[汇编:InternalsVisibleTo(Rhino.Mocks.RhinoMocks.NormalName)]我的保证,它的工作。谢谢 – Archeg