Search code examples
.netunit-testingc#-4.0rhino-mocks

RhinoMock says: "Type doesn't match the return type"


I've written such class:

public class A
{
    public virtual int LowLimit { get; set; }

    internal virtual bool CheckLimit(int measurement)
    {
        return LowLimit <= measurement;
    }
}

And a test for it:

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

And it fails with: System.InvalidOperationException : Type 'System.Boolean' doesn't match the return type 'System.Int32' for method 'A.get_LowLimit();'

But when I replace internal keyword for CheckLimit method to public, it works ok. Why it is behaiving like that?


Solution

  • If you're using an external library (StrictMock), then it can't access any of your internal methods.

    It looks like the StrictMock implementation is trying to use A's CheckLimit, but because it can't find an implementation probably uses its own implementation which uses A's LowLimit.