My attempt to create minimal example to reproduce the exception:
public struct UserSession {}
public class SessionContext<T>
{
public Action<T> OnTimeout { get; set; }
}
public class MyService
{
private readonly SessionContext<UserSession> snc;
private readonly object session_lock = new object();
public MyService()
{
snc = new SessionContext<UserSession>();
snc.OnTimeout = delegate(UserSession s)
{
lock (session_lock)
{
Console.WriteLine("timeout");
}
};
}
public Result Login(string version, string login, string password)
{
if (!CheckLoginCount(login))
return new Result(ResultCode.LoginFailedError, "");
return new Result(ResultCode.Ok, "");
}
public bool CheckLoginCount(string login)
{
return new Random().Next(2) == 0;
}
}
The test is
[Test]
public void MyService_test()
{
// act
var ss = new MyService();
// arrange
Isolate.NonPublic.WhenCalled(ss, "CheckLoginCount").WillReturn(false);
// act again :-)
var result = ss.Login("0.1", login, password);
// assert
Assert.AreEqual(result, new Result(ResultCode.MethodFailed, "inner check failed"));
}
and I get the following exception:
TypeMock.TypeMockException:
*** No method with name .ctor>b__0 in type Test.MyService exists.
at cz.b(Type A_0, String A_1)
at cz.c(Type A_0, String A_1)
at TypeMock.Mock.a(String A_0, Object A_1, Boolean A_2, Boolean A_3, Int32 A_4, Type[] A_5)
at TypeMock.Mock.a(String A_0, Object A_1, Boolean A_2, Boolean A_3, Type[] A_4)
at TypeMock.Mock.AlwaysCallOriginal(String method, Type[] genericTypes)
at TypeMock.MockManager.b(Mock A_0, BindingFlags A_1)
at TypeMock.MockManager.b(Object A_0, String A_1)
at ev..ctor(Object A_0, String A_1)
at b3..ctor(Object A_0, String A_1)
at ah.b(Object A_0, String A_1)
at OffSiteBoxTest.Basic.MyService_test() in Basic.cs: line 196
I hope it will help :-)
Best regards,
Nick.