Мокирование методов платформы
При разработке unit-тестов может возникать необходимость мокировать методы платформы. Напрямую это сделать нельзя. Чтобы обойти это ограничение, можно обернуть платформенный метод в свою процедуру/функцию. И уже его можно мокировать.
Например, есть следующий код:
Период = ТекущаяДатаСеанса();
Напрямую мокировать ТекущаяДатаСеанса()
нельзя.
Реализуем метод-обертку:
Общий модуль МетодыПлатформы
(название модуля и именование методов-оберток выбирайте по своему вкусу)
Функция ТекущаяДатаСеанса_МП() Экспорт
Возврат ТекущаяДатаСеанса();
КонецФункции
Заменяем исходный вызов на вызов обертки:
Период = МетодыПлатформы.TекущаяДатаСеанса_МП();
Теперь можно мокировать МетодыПлатформы.TекущаяДатаСеанса_МП()
.
Но необходимо определить, где будет выполняться замена на обертки, и придерживаться выбранного подхода:
- в рабочем коде. Минус в том, что код, необходимый только для тестирования, добавляется в рабочий код и усложняет его понимание.
- в тестовом расширении через аннотацию
&ИзменениеИКонтроль
и операторы препроцессора. Минус в том, что возникают обязательства поддерживать корректность расширенного метода.