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时

+0

奇怪。如果它不能访问CheckLimit,它是如何知道CheckLimit在里面使用LowLimit的?什么是解决方案?我需要有内部的关键作品:( – Archeg

+0

啊,无论如何,我得到它,所以谢谢。我已经添加[汇编:InternalsVisibleTo(Rhino.Mocks.RhinoMocks.NormalName)]我的保证,它的工作。谢谢 – Archeg