Я пытаюсь написать модульный тест для простого фабричного класса, который создает один из нескольких возможных реализующих объектов и возвращает его как ссылку на интерфейс.
DUnit имеет встроенную процедуру CheckIs(AObject: TObject; AClass: TClass; msg: string)
, которая на основе своего имени и принимаемых параметров должна не пройти тест, если тип класса объекта не соответствует ожидаемому. Единственная проблема заключается в том, что для этого требуется ссылка на объект, а не ссылка на интерфейс.
Итак, я пытаюсь использовать CheckTrue
и выполнять сравнение в теле теста, но я не так хорошо знаком с поддержкой проверки типов Delphi, как с C#.
Я знаю, что об операторе is
не может быть и речи, поскольку он работает только со ссылками на объекты.
CheckTrue(LMyInterfaceReference {comparison here} TMyClass);
Какие-либо предложения?
Кстати, я использую Delphi 2009, поэтому у меня нет доступа к новой поддержке RTTI, добавленной в 2010+.
Obj := IUnknown as TObject
- person Cosmin Prund   schedule 04.03.2011