Here is a small example code that have the same problem:
// typemock_test.h
#pragma once
using namespace System;
using namespace TypeMock;
using namespace NUnit::Framework;
namespace typemock_test {
generic<typename T>
public ref class Class0
{
public:
Class0(int i)
{
}
};
public ref class Class1
{
public:
generic<typename T>
where T : ref class
static Class0<T> ^Foo(int i)
{
return gcnew Class0<T>(1);
}
generic<typename T>
where T : ref class
static Class0<T> ^Foo(int i, int j)
{
return gcnew Class0<T>(2);
}
};
[TestFixture]
public ref class Test1
{
public:
[Test]
void Test()
{
MockManager::Init ();
Mock ^classMock = MockManager::Mock(Class1::typeid);
Class0<String ^> ^ret = gcnew Class0<String ^>(1);
classMock->ExpectAndReturn("Foo",ret,String::typeid)
->Args(1);
}
};
}
output when running Test():
------ Test started: Assembly: typemock_test.dll ------
TestCase 'typemock_test.Test1.Test'
failed: TypeMock.TypeMockException :
*** No method Foo<String> in type typemock_test.Class1 returns typemock_test.Class0`1[System.String]
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.ExpectAndReturn(String method, Object ret, Int32 timesToRun, Type[] genericTypes)
at TypeMock.Mock.ExpectAndReturn(String method, Object ret, Type[] genericTypes)
c:documents and settings0394914my documentsisual studio 2005projects ypemock_test ypemock_test ypemock_test.h(49,0): at typemock_test.Test1.Test()
0 passed, 1 failed, 0 skipped, took 5,50 seconds.