Я использую Rhino.Mocks 3.6 впервые.Я пытаюсь создать заглушку для интерфейса, который возвращает унаследованный тип (B).Когда я пытаюсь это сделать, он генерирует InvalidCastException
, пытающийся преобразовать некоторый прокси-объект в базовый класс (A).
Например:
class A {}
class B : A {}
interface IMyInterface
{
A GetA();
}
// Create a stub
var mocks = new MockRepository();
var stub = mocks.Stub<IMyInterface>();
Expect.Call( stub.GetA() ).Return( new B() );
// This will throw an InvalidCastException
var myA = stub.GetA();
Мне кажется,проблема в том, что он генерирует прокси-классы, которые не имеют той же структуры наследования, что и существующие классы.Тем не менее, мне кажется довольно распространенной ситуацией возвращать подкласс типа, указанного в сигнатуре метода.
Я пробовал несколько вариантов, но не могу заставить это работать.Есть идеи?