RhinoMock说:“类型与返回类型不匹配”

时间:2011-09-02 11:34:01

标签: .net unit-testing c#-4.0 rhino-mocks

我写过这样的课程:

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();

它失败了: System.InvalidOperationException:类型'System.Boolean'与方法'A.get_LowLimit();'

的返回类型'System.Int32'不匹配

但是当我将CheckLimit方法的内部关键字替换为public时,它可以正常工作。 为什么这样做?

1 个答案:

答案 0 :(得分:3)

如果您使用的是外部库( StrictMock ),则无法访问任何内部方法。

看起来 StrictMock 实现正在尝试使用A的 CheckLimit ,但因为找不到实现可能会使用自己的实现,它使用A的 LowLimit时