MockServer-client-1c создан для управления MoskServer с помощью 1C:Предприятие 8. Клиент поставляется в виде расширения конфигурации и реализован в виде обработки, взаимодействующей с MockServer через REST API. MockServer поддерживает OpenAPI v3 спецификацию как в JSON, так и в YAML форматах.
Мок = Обработки.MockServerClient.Создать();
Мок.Сервер("localhost", "1080")
.Когда(
Мок.Запрос()
.Метод("GET")
.Путь("/some/path")
.Заголовки()
.Заголовок("foo", "boo")
).Ответить(
Мок.Ответ()
.КодОтвета(200)
);
Вот и все! Мок создан!
// @unit-test
Процедура Пример(Фреймворк) Экспорт
// given
Мок = Обработки.MockServerClient.Создать();
Мок.Сервер( "localhost", "1080", Истина );
HTTPConnector.Get( "http://localhost:1080/some/path" );
HTTPConnector.Get( "http://localhost:1080/some/path" );
// when
Мок.Когда(
Мок.Запрос()
.Путь("/some/path")
).Проверить(
Мок.Повторений()
.НеМенее(2)
);
// then
Проверка.ЭтоИстина(Мок.Успешно());
КонецПроцедуры
Протестировано!
Руководство пользователя (англ.)
Обычная последовательность действий при работе с MockServer:
- Запустить MockServer
- Создать экземпляр клиента
- Установить ожидаемое поведение
- Запустить тестовые сценарии
- Проверить запросы
Документация по запуску MockServer
Пример запуска docker-контейнера с MockServer:
docker run -d --rm -p 1080:1080 --name mockserver-1c-integration mockserver/mockserver -logLevel DEBUG -serverPort 1080
Или запуск docker-compose.yml из корня текущего проекта:
docker-compose -f "docker-compose.yml" up -d --build
Подключение к серверу по умолчанию:
Мок = Обработки.MockServerClient.Создать();
Подключение к серверу с некоторым адресом и портом подключения:
Мок = Обработки.MockServerClient.Создать();
Мок = Мок.Server( "http://server" );
# или
Мок = Обработки.MockServerClient.Создать();
Мок = Мок.Сервер( "http://server", "1099" );
Подключение к серверу с некоторым адресом и портом подключения с предварительной очисткой MockServer:
Мок = Обработки.MockServerClient.Создать();
Мок = Мок.Сервер( "http://server", "1099", Истина );
Установка ожидания поведения (и проверка запросов) состоит из двух стадий: подготовка условий (в формате JSON) и выполнение действия для этих условий (отправка JSON на сервер).
Для клиента доступны два вида методов: промежуточные (возвращающие ссылки на объект клиента) и терминальные (выполняющие некоторое действие). Некоторые методы принимать в качестве параметров как ссылки на объекты с установленными предварительными условиями, так и строки в формате JSON. Перед отправкой сообщения на сервер будет автоматически сгенерирован необходимый JSON в зависимости от выбранной терминальной операции и предварительных условий.
Текущая реализация клиента позволяет использовать вызовы методов в виде цепочки действий, завершающихся терминальной операцией (fluent interface):
# передача готового JSON без автоматической генерации
Мок.Сервер( "localhost", "1080" )
.Когда( "{""name"":""value""}" )
.Ответить();
# передача свойства httpRequest в JSON-формате
Мок.Server( "localhost", "1080" )
.Когда(
Мок.Запрос( """name"":""value""" )
)
.Ответить();
# комбинированный вариант
Мок.Сервер( "localhost", "1080" )
.Когда(
Мок.Запрос()
.Метод( "GET" )
.Путь( "some/path" )
)
.Ответить(
Мок.Ответ( """statusCode"": 404" )
);
Проект создан с помощью:
- 1C:Enterprise 8.3.16.1502+ (8.3.16 compatibility mode)
- 1C:Enterprise Development Tools 2020.4 RC1
- 1Unit 0.4.0+
- vanessa-automation
- dt.bslls.validator
- BSL Language Server
Работа с HTTP реализована с помощью следующих библиотек: