-
Notifications
You must be signed in to change notification settings - Fork 51
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Добавлен мок объекта HTTPОтвет #478
base: develop
Are you sure you want to change the base?
Conversation
Warning There were issues while running some tools. Please review the errors and either fix the tool’s configuration or disable the tool if it’s a critical failure. 🔧 ast-grep (0.31.1)documentation/docs/features/mocking/mocking.mdAn unexpected error occurred while running ast-grep. exts/yaxunit/src/CommonModules/ЮТТестовыеДанные/Module.bslAn unexpected error occurred while running ast-grep. WalkthroughДанное обновление добавляет новую функциональность для эмуляции объекта Changes
Sequence DiagramsequenceDiagram
participant User
participant HTTPОтвет
participant Headers
participant Body
User->>HTTPОтвет: Создать()
User->>HTTPОтвет: УстановитьКодСостояния(267)
User->>HTTPОтвет: ДобавитьЗаголовок("Content-Type", "application/json")
User->>HTTPОтвет: УстановитьТело("Тестовые данные")
HTTPОтвет-->>User: Mock HTTP-ответ готов
Assessment against linked issues
Possibly related PRs
Poem
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
SonarQube Quality Gate failed!
1 Bugs
0 Vulnerabilities
4 Code Smells
No data Coverage
0.00% Duplication
#Область ОписаниеПеременных | ||
|
||
// Заголовки | ||
Перем Headers Экспорт; // ENG |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🔗Не рекомендуется использовать экспортные переменные. Это может стать источником трудновоспроизводимых ошибок
standard
unpredictable
design
Why is this an issue?
|
||
// Заголовки | ||
Перем Headers Экспорт; // ENG | ||
Перем Заголовки Экспорт; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🔗Не рекомендуется использовать экспортные переменные. Это может стать источником трудновоспроизводимых ошибок
standard
unpredictable
design
Why is this an issue?
Перем Заголовки Экспорт; | ||
|
||
// Код состояния | ||
Перем StatusCode Экспорт; // ENG |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🔗Не рекомендуется использовать экспортные переменные. Это может стать источником трудновоспроизводимых ошибок
standard
unpredictable
design
Why is this an issue?
|
||
// Код состояния | ||
Перем StatusCode Экспорт; // ENG | ||
Перем КодСостояния Экспорт; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🔗Не рекомендуется использовать экспортные переменные. Это может стать источником трудновоспроизводимых ошибок
standard
unpredictable
design
Why is this an issue?
Если ЗначениеЗаполнено(Контекст.ИмяФайла) Тогда | ||
ИмяФайла = Контекст.ИмяФайла; | ||
Иначе | ||
ИмяФайла = ПолучитьИмяВременногоФайла(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🔗Нужно добавить удаление временного файла после использования
standard
badpractice
parameters
Why is this an issue?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (5)
exts/yaxunit/src/DataProcessors/ЮТHTTPОтвет/ObjectModule.bsl (3)
23-26
: Избегайте дублирования переменныхHeaders
иЗаголовки
В коде заданы две экспортные переменные, дублирующие друг друга. Желательно хранить заголовки в одной единственной переменной, чтобы упростить поддержку и уменьшить риск несогласованных изменений.-Перем Headers Экспорт; // ENG -Перем Заголовки Экспорт; +Перем ЗаголовкиЭкспорт Экспорт;
219-254
: Разделение ответственности при добавлении заголовков
МетодыДобавитьЗаголовки
иДобавитьЗаголовок
дублируют логику вставки в два соответствия сразу. Убедитесь, что истинная потребность в двух структурах действительно существует. Если нет — объедините в одном.
310-325
: Инициализация переменных
ФункцияИнициализировать
корректно задаёт начальные значения. Однако, именаHeaders
/Заголовки
иStatusCode
/КодСостояния
стоит упростить — использование пары рус/англ переменных может сбивать с толку.documentation/docs/features/mocking/mocking.md (2)
127-131
: Добавьте пример использования мока HTTPОтветДля лучшего понимания применения мока, рекомендуется добавить практический пример использования, аналогично примеру с
HTTPСервисЗапрос
. Это поможет разработчикам быстрее освоить новую функциональность.
140-147
: Дополните описание методов настройкиРекомендуется расширить описание методов настройки:
- Добавить типы параметров для каждого метода
- Указать возвращаемые значения для цепочки вызовов
- Добавить примеры использования текучих выражений
Пример дополнения:
* Методы настройки, реализованные в виде [текучих выражений](/docs/getting-started/fluent-api.md) - * `ЗаписатьТелоВФайл()` - Записывает тело в файл, устанавливает тело и имя файла для чтения тела + * `ЗаписатьТелоВФайл(Знач Тело, Знач ИмяФайла)` - Записывает тело в файл, устанавливает тело и имя файла для чтения тела + * Параметры: + * `Тело` - Строка/ДвоичныеДанные - содержимое тела ответа + * `ИмяФайла` - Строка - имя файла для сохранения тела + * Возвращаемое значение: `ЮТHTTPОтвет` - для цепочки вызовов + * Пример: + ```bsl + Ответ = ЮТест.Данные().HTTPОтвет() + .УстановитьКодСостояния(200) + .ЗаписатьТелоВФайл("{""status"": ""success""}", "response.json"); + ```
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (8)
documentation/docs/features/mocking/mocking.md
(1 hunks)exts/yaxunit/src/CommonModules/ЮТТестовыеДанные/Module.bsl
(1 hunks)exts/yaxunit/src/Configuration/Configuration.mdo
(1 hunks)exts/yaxunit/src/DataProcessors/ЮТHTTPОтвет/ObjectModule.bsl
(1 hunks)exts/yaxunit/src/DataProcessors/ЮТHTTPОтвет/ЮТHTTPОтвет.mdo
(1 hunks)tests/src/CommonModules/Обр_ЮТHTTPОтвет/Module.bsl
(1 hunks)tests/src/CommonModules/Обр_ЮТHTTPОтвет/Обр_ЮТHTTPОтвет.mdo
(1 hunks)tests/src/Configuration/Configuration.mdo
(1 hunks)
✅ Files skipped from review due to trivial changes (2)
- exts/yaxunit/src/DataProcessors/ЮТHTTPОтвет/ЮТHTTPОтвет.mdo
- tests/src/CommonModules/Обр_ЮТHTTPОтвет/Обр_ЮТHTTPОтвет.mdo
🔇 Additional comments (8)
exts/yaxunit/src/DataProcessors/ЮТHTTPОтвет/ObjectModule.bsl (1)
198-217
: Проверка логики записи тела в файл
В функцииЗаписатьТелоВФайл
стоит предусмотреть ситуацию, когда ни в параметреТело
, ни вКонтекст.Тело
нет данных. Это поможет избежать попытки записи пустого тела и неожиданных ошибок.tests/src/Configuration/Configuration.mdo (1)
31-31
: Добавление общего модуляОбр_ЮТHTTPОтвет
Включение нового модуля выглядит корректно. Убедитесь, что он подключён к нужному подсистемному уровню, чтобы тесты выполнялись в требуемом окружении.tests/src/CommonModules/Обр_ЮТHTTPОтвет/Module.bsl (3)
21-29
: Организация исполняемых сценариев
В процедуреИсполняемыеСценарии
логично сгруппированы тесты: "Заголовки", "КодСостояния" и "Тело". Такое оформление упрощает управление тестами.
31-53
: Проверка заголовков
МетодЗаголовки
тестирует добавление как набора заголовков, так и отдельного заголовка. Подход хорошо покрывает сценарии. Конфликты имён заголовков учитываются корректно.
68-123
: Тестирование тела HTTP-ответа
Различные проверки для строк, двоичных данных и файлового тела выглядят исчерпывающе. Тесты позволяют убедиться, что методы корректно возвращают тело в нужных форматах и отображают правильное имя файла. Отлично!exts/yaxunit/src/Configuration/Configuration.mdo (1)
162-162
: Добавление dataProcessorЮТHTTPОтвет
Новый элемент<dataProcessors>DataProcessor.ЮТHTTPОтвет</dataProcessors>
корректно расширяет конфигурацию.exts/yaxunit/src/CommonModules/ЮТТестовыеДанные/Module.bsl (1)
1015-1022
: Новая функцияHTTPОтвет()
Метод возвращает объектЮТHTTPОтвет
. Структура компактная и понятная. Рекомендуется проверить, что вызывающий код корректно обрабатывает ситуацию, если функция используется вне серверного контекста.documentation/docs/features/mocking/mocking.md (1)
132-139
: Структура документации соответствует общему стилюОписание свойств и методов выполнено в едином стиле с остальными разделами, включая двуязычные названия методов.
Описание изменений
Close #382
Summary by CodeRabbit
Новые возможности
Документация
HTTPОтвет
Тесты