Skip to content

Commit

Permalink
Merge pull request #446 from edkuznetsov/develop
Browse files Browse the repository at this point in the history
Добавление мока для типа СообщениеСервисаИнтеграции
  • Loading branch information
alkoleft authored Nov 26, 2024
2 parents 5d8b56d + 47e92ed commit 97d5579
Show file tree
Hide file tree
Showing 11 changed files with 428 additions and 1 deletion.
35 changes: 35 additions & 0 deletions documentation/docs/features/mocking/mocking.md
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,41 @@ sequenceDiagram
* `ЮТест.Данные().ADORecordSet` - принимает информацию о колонках
* `Добавить()` - добавляет новую строку значений

### `СообщениеСервисаИнтеграции`

При тестировании интеграций с помощью 1С:Шина есть потребность тестировать сбор/разбор сообщений сервисов интеграции.

У `СообщениеСервисаИнтеграции` отсутствует конструктор, поэтому был добавлен [`ЮТест.Данные().СообщениеСервисаИнтеграции`](/api/ЮТТестовыеДанные#IntegrationServiceMessage) реализующий интерфейс `СообщениеСервисаИнтеграции`

Возможности:

* Реализует методы `СообщениеСервисаИнтеграции`
* Свойства
* `ДатаОтправки`
* `ДатаУстаревания`
* `Идентификатор`
* `ИдентификаторСообщенияЗапроса`
* `КодОтправителя`
* `КодПолучателя`
* `Параметры`
* `РазмерТела`
* Методы
* `ПолучитьТелоКакПоток()`
* Имеет методы настройки, реализованные в виде [текучих выражений](/docs/getting-started/fluent-api.md)
* Установка тела
* `УстановитьТелоКакДвоичныеДанные()`
* `УстановитьТелоКакСтроку()`
* `УстановитьТелоКакСтрокуJSON()`
* Методы установки свойств
* `ДобавитьПараметр()`
* `ДатаОтправки()`
* `ДатаУстаревания()`
* `Идентификатор()`
* `ИдентификаторСообщенияЗапроса()`
* `КодОтправителя()`
* `КодПолучателя()`
* `РазмерТела()`

### Создание своих моков

При возникновении подобных ситуаций, когда для тестов вам нужны объекты с какой-то логикой/методами, по аналогии с примерами выше вы без проблем сможете создать нужные вам моки.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1095,6 +1095,16 @@

КонецФункции

#Если Сервер Тогда
// Возвращает мок для `СообщениеСервисаИнтеграции`.
//
// Возвращаемое значение:
// ОбработкаОбъект.ЮТСообщениеСервисаИнтеграции - Мок
Функция СообщениеСервисаИнтеграции() Экспорт
Возврат Обработки.ЮТСообщениеСервисаИнтеграции.Создать();
КонецФункции
#КонецЕсли

#КонецОбласти

#Область СлужебныеПроцедурыИФункции
Expand Down
1 change: 1 addition & 0 deletions exts/yaxunit/src/Configuration/Configuration.mdo
Original file line number Diff line number Diff line change
Expand Up @@ -162,5 +162,6 @@
<dataProcessors>DataProcessor.ЮТКонструкторДвижений</dataProcessors>
<dataProcessors>DataProcessor.ЮТКонструкторОбъектаXDTO</dataProcessors>
<dataProcessors>DataProcessor.ЮТКонструкторТестовыхДанных</dataProcessors>
<dataProcessors>DataProcessor.ЮТСообщениеСервисаИнтеграции</dataProcessors>
<dataProcessors>DataProcessor.ЮТЮнитТесты</dataProcessors>
</mdclass:Configuration>
Original file line number Diff line number Diff line change
@@ -0,0 +1,263 @@
//©///////////////////////////////////////////////////////////////////////////©//
//
// Copyright 2021-2023 BIA-Technologies Limited Liability Company
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
//©///////////////////////////////////////////////////////////////////////////©//

#Если Сервер Тогда

#Область ОписаниеПеременных

// BSLLS:ExportVariables-off
//@skip-check object-module-export-variable
Перем ДатаОтправки Экспорт;
//@skip-check object-module-export-variable
Перем ДатаУстаревания Экспорт;
//@skip-check object-module-export-variable
Перем Идентификатор Экспорт;
//@skip-check object-module-export-variable
Перем ИдентификаторСообщенияЗапроса Экспорт;
//@skip-check object-module-export-variable
Перем КодОтправителя Экспорт;
//@skip-check object-module-export-variable
Перем КодПолучателя Экспорт;
//@skip-check object-module-export-variable
Перем Параметры Экспорт;
//@skip-check object-module-export-variable
Перем РазмерТела Экспорт;
// BSLLS:ExportVariables-on

Перем Тело; // переменная для хранения тела в рамках существования объекта

#КонецОбласти

#Область ПрограммныйИнтерфейс

// Возвращает тело как поток.
//
// Возвращаемое значение:
// Поток - Тело
Функция ПолучитьТелоКакПоток() Экспорт

Возврат ПолучитьТелоКакДвоичныеДанные().ОткрытьПотокДляЧтения();

КонецФункции

// Устанавливает тело как двоичные данные.
// При получении тела в другом формате происходит конвертация
//
// Параметры:
// Данные - ДвоичныеДанные
//
// Возвращаемое значение:
// ОбработкаОбъект.ЮТСообщениеСервисаИнтеграции - Мок
Функция УстановитьТелоКакДвоичныеДанные(Данные) Экспорт

Тело = Данные;
Возврат ЭтотОбъект;

КонецФункции

// Устанавливает тело как строку.
// При получении тела в другом формате происходит конвертация
//
// Параметры:
// Строка - Строка
//
// Возвращаемое значение:
// ОбработкаОбъект.ЮТСообщениеСервисаИнтеграции - Мок
Функция УстановитьТелоКакСтроку(Строка) Экспорт

Тело = Строка;
Возврат ЭтотОбъект;

КонецФункции

// Устанавливает тело как строку JSON.
// Сериализует переданный объект в строку JSON и сохраняет в тело
// При получении тела в другом формате происходит конвертация
//
// Параметры:
// Данные - Произвольный
//
// Возвращаемое значение:
// ОбработкаОбъект.ЮТСообщениеСервисаИнтеграции - Мок
Функция УстановитьТелоКакСтрокуJSON(Данные) Экспорт

ЗаписьJSON = Новый ЗаписьJSON();
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, Данные);

Тело = ЗаписьJSON.Закрыть();

Возврат ЭтотОбъект;

КонецФункции

// Добавляет параметр.
//
// Параметры:
// ИмяПараметра - Строка
// Значение - Строка
//
// Возвращаемое значение:
// ОбработкаОбъект.ЮТСообщениеСервисаИнтеграции - Мок
Функция ДобавитьПараметр(ИмяПараметра, Значение) Экспорт

Параметры.Вставить(ИмяПараметра, Значение);
Возврат ЭтотОбъект;

КонецФункции

// Устанавливает дату отправки.
//
// Параметры:
// Значение - Дата
//
// Возвращаемое значение:
// ОбработкаОбъект.ЮТСообщениеСервисаИнтеграции - Мок
Функция ДатаОтправки(Значение) Экспорт

ДатаОтправки = Значение;
Возврат ЭтотОбъект;

КонецФункции

// Устанавливает дату устаревания.
//
// Параметры:
// Значение - Дата
//
// Возвращаемое значение:
// ОбработкаОбъект.ЮТСообщениеСервисаИнтеграции - Мок
Функция ДатаУстаревания(Значение) Экспорт

ДатаУстаревания = Значение;
Возврат ЭтотОбъект;

КонецФункции

// Устанавливает идентификатор сообщения.
//
// Параметры:
// Значение - УникальныйИдентификатор
//
// Возвращаемое значение:
// ОбработкаОбъект.ЮТСообщениеСервисаИнтеграции - Мок
Функция Идентификатор(Значение) Экспорт

Идентификатор = Значение;
Возврат ЭтотОбъект;

КонецФункции

// Устанавливает идентификатор сообщения запроса.
//
// Параметры:
// Значение - УникальныйИдентификатор
//
// Возвращаемое значение:
// ОбработкаОбъект.ЮТСообщениеСервисаИнтеграции - Мок
Функция ИдентификаторСообщенияЗапроса(Значение) Экспорт

ИдентификаторСообщенияЗапроса = Значение;
Возврат ЭтотОбъект;

КонецФункции

// Устанавливает код отправителя.
//
// Параметры:
// Значение - Строка
//
// Возвращаемое значение:
// ОбработкаОбъект.ЮТСообщениеСервисаИнтеграции - Мок
Функция КодОтправителя(Значение) Экспорт

КодОтправителя = Значение;
Возврат ЭтотОбъект;

КонецФункции

// Устанавливает код получателя.
//
// Параметры:
// Значение - Строка
//
// Возвращаемое значение:
// ОбработкаОбъект.ЮТСообщениеСервисаИнтеграции - Мок
Функция КодПолучателя(Значение) Экспорт

КодПолучателя = Значение;
Возврат ЭтотОбъект;

КонецФункции

// Устанавливает размер тела
//
// Параметры:
// Значение - Число
//
// Возвращаемое значение:
// ОбработкаОбъект.ЮТСообщениеСервисаИнтеграции - Мок
Функция РазмерТела(Значение) Экспорт

РазмерТела = Значение;
Возврат ЭтотОбъект;

КонецФункции

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

Функция ПолучитьТелоКакДвоичныеДанные()

ТипТела = ТипЗнч(Тело);

Если Тело = Неопределено Тогда
Возврат ПолучитьДвоичныеДанныеИзBase64Строки("");
ИначеЕсли ТипТела = Тип("ДвоичныеДанные") Тогда
Возврат Тело;
ИначеЕсли ТипТела = Тип("Строка") Тогда
Возврат ПолучитьДвоичныеДанныеИзСтроки(Тело);
Иначе
ВызватьИсключение СтрШаблон("Установленный тип тела %1 не поддерживается.", ТипТела);
КонецЕсли;

КонецФункции

Процедура Инициализировать()

ДатаОтправки = Дата(1, 1, 1);
ДатаУстаревания = Дата(1, 1, 1);
Идентификатор = Новый УникальныйИдентификатор("00000000-0000-0000-0000-000000000000");
ИдентификаторСообщенияЗапроса = Новый УникальныйИдентификатор("00000000-0000-0000-0000-000000000000");
КодОтправителя = "";
КодПолучателя = "";
РазмерТела = 0;
Параметры = Новый Соответствие();

КонецПроцедуры

#КонецОбласти

#Область Инициализация

Инициализировать();

#КонецОбласти

#КонецЕсли
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:DataProcessor xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="1b3f1b1b-792a-43f7-b237-34522342bdbd">
<producedTypes>
<objectType typeId="6da0f4bb-5c39-49e7-9375-1d9ea3cb0e45" valueTypeId="14ce3a79-9132-405b-b784-0ca65b26bcce"/>
<managerType typeId="a85769e7-f289-4126-ad03-e3933be34c9a" valueTypeId="5bcc047f-bbe2-4753-bc76-ff6c993e0af4"/>
</producedTypes>
<name>ЮТСообщениеСервисаИнтеграции</name>
<synonym>
<key>ru</key>
<value>Мок для СообщениеCервисаBнтеграции</value>
</synonym>
<useStandardCommands>true</useStandardCommands>
</mdclass:DataProcessor>
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,6 @@
<content>DataProcessor.ЮТHTTPServiceRequest</content>
<content>DataProcessor.ЮТHTTPСервисЗапрос</content>
<content>DataProcessor.ЮТRecordSet</content>
<content>DataProcessor.ЮТСообщениеСервисаИнтеграции</content>
<parentSubsystem>Subsystem.ЮТДвижок</parentSubsystem>
</mdclass:Subsystem>
Original file line number Diff line number Diff line change
Expand Up @@ -51,4 +51,5 @@
<content>DataProcessor.ЮТКонструкторОбъектаXDTO</content>
<content>DataProcessor.ЮТКонструкторТестовыхДанных</content>
<content>DataProcessor.ЮТЮнитТесты</content>
<content>DataProcessor.ЮТСообщениеСервисаИнтеграции</content>
</mdclass:Subsystem>
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@

Наборы = ЮТЧитательСлужебный.ЗагрузитьТесты(ПараметрыЗапуска);
ЮТест.ОжидаетЧто(Наборы, "Прочитанные наборы расширения tests")
.ИмеетДлину(37);
.ИмеетДлину(38);

КонецПроцедуры

Expand Down
Loading

0 comments on commit 97d5579

Please sign in to comment.