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