Search code examples
unit-testingmockingtypemocktypemock-isolator

TypeMock strange behavior


I found a strange behavior using typemock for unit testing -

internal class MyClass
{
    public static int foo(int param)
    {
        return param;
    }
}
[TestClass]
public class UnitTest1
{
   [TestMethod, Isolated]
    public void TestMethod1()
    {
        Isolate.WhenCalled(()=>MyClass.foo(1)).WillReturn(-1);
        Isolate.WhenCalled(() => MyClass.foo(2)).WillReturn(-2);
        var p1 = MyClass.foo(1); //p1 = -1
        var p2 = MyClass.foo(1); //p2 = -2 (!!!)
    }
}

in debug mode p1 is -1 and p2 is -2 Is that a bug in typemock or i'm missing something?

Thanks,

Kfir


Solution

  • Isolator by default ignores arguments passed to functions in WhenCalled. In your case you should use WithExactArguments for the expectations to hold:

    Isolate.WhenCalled(() => MyClass.foo(2)).WithExactArguments().WillReturn(-2);