Проблемы приведения типов интерфейсов и решения с помощью Spring.Mocking в DelphiDelphi , Программа и Интерфейс , ИнтерфейсПри работе с интерфейсами в Delphi и использовании фреймворка для мокирования Spring.Mocking может возникнуть проблема с приведением типов, которая проявляется в виде ошибки при выполнении приведения одного интерфейса к другому, несмотря на то, что один интерфейс является производным от другого. В данном случае пользователь столкнулся с проблемой, когда приведение типа Контекст проблемыВ коде, предоставленном пользователем, есть класс Подтвержденное решениеРазработчики Spring.Mocking указали, что моки автоматически возвращают мок, если метод возвращает интерфейс, и всегда один и тот же экземпляр. Это означает, что для фабричных моков не требуется указывать ожидаемое поведение. Достаточно получить мок, возвращаемый фабрикой, и указать его поведение. Также было обнаружено, что в коде есть баг: мок пытается выполнить приведение для любого интерфейса, независимо от его "мокируемости". В результате было добавлено проверка, и теперь ошибка будет возникать позже, если попытаться использовать мок как мокируемый интерфейс. Альтернативное решениеДля поддержки других интерфейсов на моке необходимо явно указать это. Это следует из того же принципа, что и при реализации интерфейсов в классах. Если класс реализует только Обновленное решение (12.04.2021)В обновлении было указано, что два упомянутых бага устранены:
Пример кода
Обратите внимание, что моки инициализируются автоматически, поэтому не требуется вызывать ЗаключениеПри работе с интерфейсами и мокировании в Spring.Mocking важно правильно указывать поведение моков и поддерживаемые интерфейсы. После устранения упомянутых багов, использование мокирования становится более надежным и удобным. Проблема заключается в некорректном приведении типов интерфейсов при использовании фреймворка Spring.Mocking в Delphi, что приводит к ошибке при выполнении теста. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |