### Activating Mocking Configuration with Run Phase in BSL Source: https://github.com/artemb91/yaxunit/blob/develop/documentation/docs/features/mocking/mockito/how-to.md Explains how to finalize the mocking setup and activate it by calling the `Прогон()` method. This transitions Mockito into a 'run' mode where configured mocks become active. The example demonstrates setting up a mock and then asserting its behavior. ```BSL // Завершаем настройку мокирования и переводим Мокито в режим прогона Мокито.Обучение(РаботаСHTTP) .Когда("ОтправитьОбъектНаСервер", Мокито.МассивПараметров(ИсточникДанных, Данные)) .Вернуть(2) .Прогон(); // Активируем настройки мокирования // Выполняем тестовый вызов метода и проверяем результат ЮТест.ОжидаетЧто(РаботаСHTTP.ОтправитьОбъектНаСервер(ИсточникДанных, Данные)) .Равно(2); ``` -------------------------------- ### Start Local Development Server Source: https://github.com/artemb91/yaxunit/blob/develop/documentation/README.md Starts a local development server for live preview. Most changes are reflected live without requiring a server restart. ```shell $ yarn start ``` -------------------------------- ### Install Dependencies Source: https://github.com/artemb91/yaxunit/blob/develop/documentation/README.md Installs project dependencies using yarn. ```shell $ yarn ``` -------------------------------- ### Configuring Mocking Conditions via Real Method Call in BSL Source: https://github.com/artemb91/yaxunit/blob/develop/documentation/docs/features/mocking/mockito/how-to.md Shows how Mockito allows setting mocking conditions by performing a real method call during the setup phase. This makes the configuration more intuitive and safe. The example sets up a mock for `РаботаСHTTP.ОтправитьОбъектНаСервер` with specific parameters. ```BSL // Начинаем настройку мокирования для объекта "РаботаСHTTP" Мокито.Обучение(РаботаСHTTP) // Указываем условие вызова через реальный вызов метода "ОтправитьОбъектНаСервер" // с параметрами "ИсточникДанных" и "Данные" .Когда(РаботаСHTTP.ОтправитьОбъектНаСервер(ИсточникДанных, Данные)) // Настраиваем метод на возврат значения "2" при вызове с указанными параметрами .Вернуть(2) ``` -------------------------------- ### Chained Method Calls Example for Text Constructor Source: https://github.com/artemb91/yaxunit/blob/develop/documentation/docs/features/text-constructor.md This example demonstrates how to effectively use the `ЮТКонструкторТекста` module by chaining multiple method calls. It illustrates the initialization process, adding a formatted header, applying line breaks and tabs, and then adding a templated line with a custom separator, showcasing the module's fluent interface. ```bsl Объект = Новый ObjectModule; Объект.Инициализировать(); Объект.НоваяСтрока("Заголовок:", "# ", "") .ПереносСтроки() .Табуляция(1) .НоваяСтрокаПоШаблону("Параметры: %1, %2", "A", "B") .Разделитель(" | "); Результат = Объект.Текст(); // "# Заголовок:\n | \tПараметры: \"A\", \"B\"" ``` -------------------------------- ### Yaxunit: Document Movement Constructor Example Source: https://github.com/artemb91/yaxunit/blob/develop/documentation/docs/features/test-data/data-generation/index.md Demonstrates how to use the Document Movement Constructor to add and configure lines for document registers. It shows initializing the constructor, adding rows, setting fictitious data for specific fields, and saving the entries. ```bsl // Создание пустышки документа, будет использоваться в качестве регистратора Документ = ЮТест.Данные().СоздатьДокумент("Документы.УстановкаЦен"); // Формирование нужных проводок по регистру ЦеныТоваров ЮТест.Данные().КонструкторДвижений(Документ, "ЦеныТоваров") // Инициализация конструктора .ДобавитьСтроку() // Добавление записи в набор .ФикцияРеквизитов("Товар, ВидЦен") // Заполнение фиктивными данными .Установить("Цена", 0) // Установка цены .Записать(); // Сохранение // Создание дополнительных данных Документ = ЮТест.Данные().СоздатьДокумент("Документы.РасходТовара"); Покупатель = ЮТест.Данные().СоздатьЭлемент("Справочники.Контрагенты"); // Инициализация конструктора Конструктор = ЮТест.Данные().КонструкторДвижений(Документ, "Продажи"); // Заполнение движений Для Инд = 1 По 10 Цикл Конструктор .ДобавитьСтроку() .Установить("Покупатель", Покупатель) .ФикцияРеквизитов("Товар, Сумма"); КонецЦикла; // Сохранение записей в базе Конструктор.Записать(); ``` -------------------------------- ### Create a Query Description Object in BSL Source: https://github.com/artemb91/yaxunit/blob/develop/documentation/docs/features/auxiliary-modules/queries.md This BSL example shows how to initialize a query description object using `ЮТЗапросы.ОписаниеЗапроса()`. This object can then be configured with table names, conditions, and parameters to define a custom query for execution by other `ЮТЗапросы` methods. ```BSL ОписаниеЗапроса = ЮТЗапросы.ОписаниеЗапроса(); ОписаниеЗапроса.ИмяТаблицы = "Справочник.Товары"; ОписаниеЗапроса.Условия.Добавить("Ссылка = &Ссылка"); ОписаниеЗапроса.Условия.Добавить("НЕ ПометкаУдаления"); ОписаниеЗапроса.ЗначенияПараметров.Вставить("Ссылка", Товар); ``` -------------------------------- ### Mocking Document Method to Throw Exception in 1C Source: https://github.com/artemb91/yaxunit/blob/develop/documentation/docs/features/mocking/mockito/Примеры.md Illustrates how to configure Mockito to make a document method (`Документы.ПриходТовара.ОбработкаПроведения`) throw a specific exception. The example also shows how to assert that the expected exception is thrown using `ЮТест.ВыбрасываетИсключение`. ```bsl // Настройка мокирования Мокито.Обучение(Документы.ПриходТовара) .Когда("ОбработкаПроведения").ВыброситьИсключение("Ошибка проведения") .Прогон(); // Тестовый прогон Документ = Документы.ПриходТовара.СоздатьДокумент(); ЮТест.ОжидаетЧто(Документ) .Метод("Записать").Параметр(РежимЗаписиДокумента.Проведение) .ВыбрасываетИсключение("Ошибка проведения"); ``` -------------------------------- ### Execute a Simple Query with Description Object in BSL Source: https://github.com/artemb91/yaxunit/blob/develop/documentation/docs/features/auxiliary-modules/queries.md This BSL code shows how to construct a query description object using `ЮТЗапросы.ОписаниеЗапроса` and then execute it with `ЮТЗапросы.РезультатЗапроса`. The example defines table, conditions, parameters, and selected fields, then validates the returned query result. ```BSL ОписаниеЗапроса = ЮТЗапросы.ОписаниеЗапроса(); ОписаниеЗапроса.ИмяТаблицы = "Справочник.Товары"; ОписаниеЗапроса.Условия.Добавить("Ссылка = &Ссылка"); ОписаниеЗапроса.Условия.Добавить("НЕ ПометкаУдаления"); ОписаниеЗапроса.ЗначенияПараметров.Вставить("Ссылка", Товар); ОписаниеЗапроса.ВыбираемыеПоля.Добавить("Ссылка"); ОписаниеЗапроса.ВыбираемыеПоля.Добавить("1+1 КАК Число"); ЮТест.ОжидаетЧто(ЮТЗапросы.РезультатЗапроса(ОписаниеЗапроса)) .ИмеетДлину(1) .Свойство("[0].Ссылка").Равно(Товар) .Свойство("[0].Число").Равно(2); ``` -------------------------------- ### Usage Examples for Fake Data Generation (bsl) Source: https://github.com/artemb91/yaxunit/blob/develop/documentation/docs/features/test-data/data-generation/index.md This snippet demonstrates how to use the `ЮТест.Данные()` (UTest.Data()) module to generate various types of fake data, including random numbers, identifiers, and to construct and write objects. It shows practical application of the data generation utilities. ```bsl // Генерация случайных чисел Число = ЮТест.Данные().СлучайноеЧисло(1, 100); // Случайное число от 1 до 100 ПоложительноеЧисло = ЮТест.Данные().СлучайноеПоложительноеЧисло(100); // Случайное положительное число до 100 ОтрицательноеЧисло = ЮТест.Данные().СлучайноеОтрицательноеЧисло(-100); // Случайное отрицательное число до -100 // Генерация идентификаторов УникальныйИд = ЮТест.Данные().Фикция(Тип("УникальныйИдентификатор")); // Новый уникальный идентификатор СтроковыйИд = ЮТест.Данные().СлучайныйИдентификатор(10, "ID_"); // Случайный строковый идентификатор длиной 10 с префиксом "ID_" // Использование в конструкторе объекта Конструктор = ЮТест.Данные().КонструкторОбъекта("Справочники.Товары") .Установить("Наименование", "Товар " + ЮТест.Данные().СлучайнаяСтрока()) .Установить("Идентификатор", ЮТест.Данные().Фикция(Тип("УникальныйИдентификатор"))) .Записать(); ``` -------------------------------- ### Mocking Methods for Specific Object by Reference in BSL Source: https://github.com/artemb91/yaxunit/blob/develop/documentation/docs/features/mocking/mockito/how-to.md Illustrates how to mock a method for a single, specific object instance when only a reference is available. This is useful for targeting individual objects. The example mocks 'ПолучитьКомментарий' for a specific 'Заказ' document reference. ```BSL // Ссылка на документ СсылкаНаДок = Справочники.Заказы.НайтиПоНомеру("Заказ-789"); // Мокируем пользовательский метод "ПолучитьКомментарий" для объекта с этой ссылкой Мокито.Обучение(СсылкаНаДок) .Когда("ПолучитьКомментарий") .Вернуть("Тестовый заказ"); // Вызов Док = СсылкаНаДок.ПолучитьОбъект(); Комментарий = Док.ПолучитьКомментарий(); // Вернет "Тестовый заказ" ``` -------------------------------- ### Mockito Example for SMS Gateway Mocking in BSL Source: https://github.com/artemb91/yaxunit/blob/develop/documentation/docs/features/mocking/mocking.md Demonstrates how to use Mockito to mock an external SMS gateway interaction. It sets up a predefined HTTP response for the 'ПослатьСообщение' method of the 'ОтправкаСМС_Провайдер1' object, preventing actual external requests during testing. ```bsl Ответ = Новый HTTPСервисОтвет(200); Ответ.УстановитьТелоИзСтроки(СериализацияJSON.ЗначениеВСтроку(Новый Структура("id, status", "9999", "delivered"))); Мокито.Обучение(ОтправкаСМС_Провайдер1) .Когда("ПослатьСообщение") // Теперь, вместо реального запроса к шлюзу .Вернуть(Ответ) // метод всегда будет возвращать нужный нам ответ .Прогон(); РоботОтправки.ОтправкаСМС(); ``` -------------------------------- ### Example of Predicate Usage for Data Search in BSL Source: https://github.com/artemb91/yaxunit/blob/develop/documentation/docs/features/test-data/data-search.md Illustrates how to construct and use a predicate with `ЮТест.Предикат()` to define complex search conditions (e.g., name starting with 'Тест' and empty TIN) when finding a random counterparty using `ЮТест.Данные().СлучайнаяСсылка` in BSL. ```bsl // Найти случайного контрагента, у которого наименование начинается с "Тест" // и ИНН не заполнен. Предикат = ЮТест.Предикат() .Реквизит("Наименование").Подобно("Тест%") .Реквизит("ИНН").Равно(""); СлучайныйКонтрагент = ЮТест.Данные().СлучайнаяСсылка("Справочник.Контрагенты", Предикат); ``` -------------------------------- ### Build Static Website Source: https://github.com/artemb91/yaxunit/blob/develop/documentation/README.md Generates static content into the `build` directory, which can then be served using any static content hosting service. ```shell $ yarn build ``` -------------------------------- ### Create Counterparty with Specific GUID in BSL Source: https://github.com/artemb91/yaxunit/blob/develop/documentation/docs/features/test-data/data-generation/object-builder.md Demonstrates the creation of a 'Counterparty' object with a predefined GUID, setting its name, and then saving it. This snippet showcases chained method calls for object construction and population. ```bsl Контрагент = ЮТест.Данные().КонструкторОбъекта("Справочник.Контрагенты") .ФикцияОбязательныхПолей() // Автоматически заполняем обязательные поля .УстановитьСсылкуНового("00000000-0000-0000-0000-000000000001") // Устанавливаем GUID .Установить("Наименование", "Контрагент с заданным GUID") .Записать(); Сообщить("Создан контрагент с GUID: " + Контрагент.Наименование); ``` -------------------------------- ### Deploy Website Source: https://github.com/artemb91/yaxunit/blob/develop/documentation/README.md Deploys the website, typically to GitHub pages. Supports deployment with or without SSH. ```shell USE_SSH=true yarn deploy ``` ```shell GIT_USER= yarn deploy ``` -------------------------------- ### BSL: Predicate Structure Example Source: https://github.com/artemb91/yaxunit/blob/develop/documentation/docs/features/predicates.md Shows the internal structure of a Yaxunit predicate as a JSON object. This structure defines the property name, comparison type, and value for a single condition. ```json { "ИмяРеквизита": "Число", "ВидСравнения": "Больше", "Значение": 0 } ```