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

Тестирование интеграций с использованием 1С:Шина. СообщениеСервисаИнтеграции

При тестировании интеграций с использованием 1С:Шина часто возникает потребность в тестировании сборки и разборки сообщений сервисов интеграции. Однако объект СообщениеСервисаИнтеграции не имеет конструктора, что делает его создание и настройку в тестах затруднительным. Для решения этой проблемы была разработана заглушка (stub), которая имитирует интерфейс СообщениеСервисаИнтеграции и позволяет упростить тестирование.

Возможности заглушки

Для упрощения тестирования была разработана заглушка СообщениеСервисаИнтеграции, которая реализует интерфейс этого объекта и предоставляет методы для настройки данных. Заглушка включена в библиотеку YAxUnit и доступна через метод ЮТест.Данные().СообщениеСервисаИнтеграции.

Заглушка для СообщениеСервисаИнтеграции предоставляет следующие возможности:

Реализация свойств и методов СообщениеСервисаИнтеграции

  • Свойства:

    • ДатаОтправки — дата отправки сообщения.
    • ДатаУстаревания — дата устаревания сообщения.
    • Идентификатор — уникальный идентификатор сообщения.
    • ИдентификаторСообщенияЗапроса — идентификатор сообщения-запроса.
    • КодОтправителя — код отправителя сообщения.
    • КодПолучателя — код получателя сообщения.
    • Параметры — параметры сообщения.
    • РазмерТела — размер тела сообщения.
  • Методы:

    • ПолучитьТелоКакПоток() — получение тела сообщения в виде потока.

Методы настройки

Заглушка также предоставляет методы настройки, реализованные в виде текучих выражений (fluent API), что делает процесс настройки данных более удобным и читаемым.

Установка тела сообщения

УстановитьТелоКакДвоичныеДанные(ДвоичныеДанные)

  • Описание: Устанавливает тело сообщения в виде двоичных данных.
  • Параметры:
    • ДвоичныеДанные — двоичные данные, которые будут использоваться в качестве тела сообщения.
  • Возвращаемое значение: Заглушка СообщениеСервисаИнтеграции.

УстановитьТелоКакСтроку(Строка)

  • Описание: Устанавливает тело сообщения в виде строки. При получении тела в другом формате (например, как поток или двоичные данные) происходит автоматическая конвертация.
  • Параметры:
    • Строка — строка, которая будет использоваться в качестве тела сообщения.
  • Возвращаемое значение: Заглушка СообщениеСервисаИнтеграции.

УстановитьТелоКакСтрокуJSON(Данные)

  • Описание: Устанавливает тело сообщения в виде строки JSON. Переданный объект автоматически сериализуется в строку JSON.
  • Параметры:
    • Данные — произвольный объект, который будет сериализован в JSON и использован в качестве тела сообщения.
  • Возвращаемое значение: Заглушка СообщениеСервисаИнтеграции.

Установка свойств сообщения

ДобавитьПараметр(ИмяПараметра, Значение)

  • Описание: Добавляет параметр к сообщению.
  • Параметры:
    • ИмяПараметра — строка, имя параметра.
    • Значение — строка, значение параметра.
  • Возвращаемое значение: Заглушка СообщениеСервисаИнтеграции.

ДатаОтправки(Значение)

  • Описание: Устанавливает дату отправки сообщения.
  • Параметры:
    • Значение — дата, дата отправки сообщения.
  • Возвращаемое значение: Заглушка СообщениеСервисаИнтеграции.

ДатаУстаревания(Значение)

  • Описание: Устанавливает дату устаревания сообщения.
  • Параметры:
    • Значение — дата, дата устаревания сообщения.
  • Возвращаемое значение: Заглушка СообщениеСервисаИнтеграции.

Идентификатор(Значение)

  • Описание: Устанавливает уникальный идентификатор сообщения.
  • Параметры:
    • Значение — уникальный идентификатор.
  • Возвращаемое значение: Заглушка СообщениеСервисаИнтеграции.

ИдентификаторСообщенияЗапроса(Значение)

  • Описание: Устанавливает идентификатор сообщения-запроса.
  • Параметры:
    • Значение — уникальный идентификатор.
  • Возвращаемое значение: Заглушка СообщениеСервисаИнтеграции.

КодОтправителя(Значение)

  • Описание: Устанавливает код отправителя сообщения.
  • Параметры:
    • Значение — строка, код отправителя.
  • Возвращаемое значение: Заглушка СообщениеСервисаИнтеграции.

КодПолучателя(Значение)

  • Описание: Устанавливает код получателя сообщения.
  • Параметры:
    • Значение — строка, код получателя.
  • Возвращаемое значение: Заглушка СообщениеСервисаИнтеграции.

РазмерТела(Значение)

  • Описание: Устанавливает размер тела сообщения.
  • Параметры:
    • Значение — число, размер тела сообщения.
  • Возвращаемое значение: Заглушка СообщениеСервисаИнтеграции.

Пример использования заглушки

Пример использования заглушки для тестирования кода, работающего с СообщениеСервисаИнтеграции:

Процедура НастройкаСообщения()
// Создаем заглушку
Заглушка = ЮТест.Данные().СообщениеСервисаИнтеграции();

// Настраиваем свойства и тело сообщения
Заглушка.Идентификатор("12345")
.КодОтправителя("Sender1")
.КодПолучателя("Receiver1")
.ДатаОтправки("2023-10-01T12:00:00")
.ДатаУстаревания("2023-10-02T12:00:00")
.ДобавитьПараметр("Param1", "Value1")
.УстановитьТелоКакСтрокуJSON(Новый Структура("key", "value"));

// Проверяем результат
ЮТест.ОжидаетЧто(Заглушка)
.Свойство("Идентификатор").Равно("12345")
.Свойство("КодОтправителя").Равно("Sender1")
.Свойство("Параметры.Param1").Равно("Value1")
;
ЮТест.ОжидаетЧто(СтрокаИзПотока(Заглушка.ПолучитьТелоКакПоток()))
.Равно("{""key"":""value""}");
КонецПроцедуры

Заключение

Использование заглушки для СообщениеСервисаИнтеграции значительно упрощает процесс тестирования кода, работающего с сообщениями сервисов интеграции. Благодаря возможностям, предоставляемым библиотекой YAxUnit, теперь можно легко настраивать данные и эмулировать поведение СообщениеСервисаИнтеграции, не прибегая к сложным и громоздким решениям. Это делает процесс разработки и тестирования более гибким и эффективным.