Перейти к основному содержимому

Мокирование методов платформы

При разработке unit-тестов может возникать необходимость мокировать методы платформы. Напрямую это сделать нельзя. Чтобы обойти это ограничение, можно обернуть платформенный метод в свою процедуру/функцию. И уже его можно мокировать.

Например, есть следующий код:

Период = ТекущаяДатаСеанса();

Напрямую мокировать ТекущаяДатаСеанса() нельзя.

Реализуем метод-обертку:

Общий модуль МетодыПлатформы (название модуля и именование методов-оберток выбирайте по своему вкусу)

Функция ТекущаяДатаСеанса_МП() Экспорт
    Возврат ТекущаяДатаСеанса();
КонецФункции

Заменяем исходный вызов на вызов обертки:

Период = МетодыПлатформы.TекущаяДатаСеанса_МП();

Теперь можно мокировать МетодыПлатформы.TекущаяДатаСеанса_МП().

Но необходимо определить, где будет выполняться замена на обертки, и придерживаться выбранного подхода:

  • в рабочем коде. Минус в том, что код, необходимый только для тестирования, добавляется в рабочий код и усложняет его понимание.
  • в тестовом расширении через аннотацию &ИзменениеИКонтроль и операторы препроцессора. Минус в том, что возникают обязательства поддерживать корректность расширенного метода.