https://github.com/oscript-library/asserts
Библиотека утверждений (assertions) для 1Script
https://github.com/oscript-library/asserts
Last synced: about 1 month ago
JSON representation
Библиотека утверждений (assertions) для 1Script
- Host: GitHub
- URL: https://github.com/oscript-library/asserts
- Owner: oscript-library
- Created: 2016-09-05T20:20:59.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2024-12-28T10:16:16.000Z (about 1 year ago)
- Last Synced: 2025-01-19T04:12:44.718Z (about 1 year ago)
- Language: 1C Enterprise
- Size: 1.32 MB
- Stars: 10
- Watchers: 6
- Forks: 5
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Утверждения
Добавляет в скрипт функционал "Утверждений" (assertions). Возможны 2 стиля использования:
* **Модуль "Утверждения"** - утверждения в стиле фреймворка xUnitFor1C
* **Свойство глобального контекста "Ожидаем"** - [fluent-API утверждений в стиле BDD](http://habrahabr.ru/post/260013/)
## Краткий пример
```bsl
МояПеременная = ВычислитьЧтоТоТам();
// xUnit style
Утверждения.ПроверитьРавенство(1, МояПеременная, "Моя переменная должна быть строго равна 1");
// BDD style
Ожидаем.Что(МояПеременная).Равно(1);
```
## Модуль "Ожидаем"
BDD стиль предоставляет fluent API для создания более читаемых утверждений.
### Базовый синтаксис
```bsl
Ожидаем.Что(ПроверяемоеЗначение).МетодПроверки(ПараметрыПроверки);
```
### Отрицание
#### `Не_()` / `ЭтоНе()`
Инвертирует результат следующей проверки.
```bsl
Ожидаем.Что(Значение).Не_().Равно(0);
Ожидаем.Что(Строка).ЭтоНе().Заполнено();
```
### Логические проверки
#### `ЭтоИстина()` / `ЕстьИстина()`
Проверяет, что значение равно `Истина`.
```bsl
Ожидаем.Что(УсловиеВыполнено).ЭтоИстина();
```
#### `ЭтоЛожь()` / `ЕстьЛожь()`
Проверяет, что значение равно `Ложь`.
```bsl
Ожидаем.Что(ОшибкаВозникла).ЭтоЛожь();
```
#### `Равно(ОжидаемоеЗначение)`
Проверяет равенство значений.
```bsl
Ожидаем.Что(Результат).Равно(42);
Ожидаем.Что(Статус).Равно("Готов");
```
### Числовые сравнения в BDD
#### `Больше(МеньшееЗначение)`
Проверяет, что значение больше указанного.
```bsl
Ожидаем.Что(Количество).Больше(0);
```
#### `БольшеИлиРавно(МеньшееИлиРавноеЗначение)` / `Минимум(МинимальноеЗначение)`
Проверяет, что значение больше или равно указанному.
```bsl
Ожидаем.Что(Возраст).БольшеИлиРавно(18);
Ожидаем.Что(Зарплата).Минимум(10000);
```
#### `Меньше(БольшееЗначение)`
Проверяет, что значение меньше указанного.
```bsl
Ожидаем.Что(ВремяОтклика).Меньше(1000);
```
#### `МеньшеИлиРавно(БольшееИлиРавноеЗначение)` / `Максимум(МаксимальноеЗначение)`
Проверяет, что значение меньше или равно указанному.
```bsl
Ожидаем.Что(Оценка).МеньшеИлиРавно(10);
Ожидаем.Что(Размер).Максимум(1024);
```
#### `Между(НачальноеЗначение, КонечноеЗначение)`
Проверяет, что значение находится в указанном диапазоне.
```bsl
Ожидаем.Что(Процент).Между(0, 100);
```
### Проверки существования и заполненности
#### `Заполнено()`
Проверяет, что значение заполнено.
```bsl
Ожидаем.Что(НомерЗаказа).Заполнено();
```
#### `Существует()`
Проверяет, что значение не равно `Неопределено` и не равно `Null`.
```bsl
Ожидаем.Что(НайденныйЭлемент).Существует();
```
#### `ЭтоНеопределено()` / `ЕстьНеопределено()`
Проверяет, что значение равно `Неопределено`.
```bsl
Ожидаем.Что(НеинициализированнаяПеременная).ЭтоНеопределено();
```
#### `ЭтоNull()` / `ЕстьNull()`
Проверяет, что значение равно `Null`.
```bsl
Ожидаем.Что(ПустаяСсылка).ЭтоNull();
```
### Проверки типов в BDD
#### `ИмеетТип(ТипИлиИмяТипа)`
Проверяет соответствие типа значения ожидаемому.
```bsl
Ожидаем.Что(МойОбъект).ИмеетТип("Структура");
Ожидаем.Что(СписокЗначений).ИмеетТип(Тип("Массив"));
```
### Работа с коллекциями
#### `Содержит(ИскомоеЗначение)`
Проверяет содержание элемента в коллекции или подстроки в строке.
```bsl
// Для строк
Ожидаем.Что(ТекстОшибки).Содержит("не найден");
// Для массивов
Ожидаем.Что(СписокФайлов).Содержит("config.json");
// Для структур/соответствий - проверяет значения
Ожидаем.Что(Настройки).Содержит("Администратор");
```
#### `ИмеетДлину(ОжидаемаяДлина)`
Проверяет длину строки или количество элементов в коллекции.
```bsl
Ожидаем.Что(Пароль).ИмеетДлину(8);
Ожидаем.Что(МассивДанных).ИмеетДлину(5);
```
### Проверки методов и исключений
#### `ИмеетМетод(ИмяМетода)`
Проверяет наличие метода у объекта.
```bsl
Ожидаем.Что(МойОбъект).ИмеетМетод("ВыполнитьОбработку");
```
#### `Метод(ИмяМетода, ПараметрыМетода).ВыбрасываетИсключение(ФрагментИсключения)`
Проверяет, что вызов метода вызывает исключение.
```bsl
Ожидаем.Что(КалькуляторОбъект).Метод("Разделить", Новый Массив).ВыбрасываетИсключение("деление на ноль");
```
### Работа с таблицами значений
#### `РавнаТаблице(ОжидаемоеЗначение, СравнитьТолькоСТруктуру = Ложь)`
Сравнивает таблицы значений.
```bsl
Ожидаем.Что(ПолученнаяТаблица).РавнаТаблице(ОжидаемаяТаблица);
```
#### `ИмеетРавнуюСтруктуруСТаблицей(ОжидаемоеЗначение)`
Сравнивает только структуру таблиц (колонки и их типы).
```bsl
Ожидаем.Что(НоваяТаблица).ИмеетРавнуюСтруктуруСТаблицей(ШаблонТаблицы);
```
#### `СодержитСтрокуТаблицы(ОжидаемоеЗначение)`
Проверяет наличие строки с указанными значениями в таблице.
```bsl
СтрокаПоиска = Новый Структура("Код, Наименование", "001", "Товар1");
Ожидаем.Что(ТаблицаТоваров).СодержитСтрокуТаблицы(СтрокаПоиска);
```
### Модификаторы сравнения
#### `БезУчетаПорядкаСтрок()`
Игнорирует порядок строк при сравнении таблиц.
```bsl
Ожидаем.Что(Таблица1).БезУчетаПорядкаСтрок().РавнаТаблице(Таблица2);
```
#### `БезУчетаПорядкаКолонок()`
Игнорирует порядок колонок при сравнении таблиц.
```bsl
Ожидаем.Что(Таблица1).БезУчетаПорядкаКолонок().РавнаТаблице(Таблица2);
```
#### `БезУчетаИменКолонок()`
Игнорирует имена колонок при сравнении таблиц.
```bsl
Ожидаем.Что(Таблица1).БезУчетаИменКолонок().РавнаТаблице(Таблица2);
```
#### `НеУчитыватьПорядокВМассиве()`
Игнорирует порядок элементов при сравнении массивов.
```bsl
Ожидаем.Что(Массив1).НеУчитыватьПорядокВМассиве().РавноМассиву(Массив2);
```
### Продвинутые сравнения
#### `Идентично(ОжидаемоеЗначение)`
Выполняет глубокое сравнение объектов (структур, массивов, таблиц).
```bsl
Ожидаем.Что(СложнаяСтруктура).Идентично(ОжидаемаяСтруктура);
```
#### `РавноМассиву(ОжидаемоеЗначение)`
Сравнивает массивы с детальной диагностикой различий.
```bsl
Ожидаем.Что(ПолученныйМассив).РавноМассиву(ОжидаемыйМассив);
```
#### `РавноСтруктуреИлиСоответствию(ОжидаемоеЗначение)`
Сравнивает структуры или соответствия с детальной диагностикой.
```bsl
Ожидаем.Что(НастройкиСистемы).РавноСтруктуреИлиСоответствию(ОжидаемыеНастройки);
```
## Цепочки утверждений
BDD стиль поддерживает цепочки утверждений для комплексных проверок:
```bsl
Ожидаем.Что(Пользователь)
.ИмеетТип("Структура")
.Содержит("Администратор")
.ИмеетДлину(3);
Ожидаем.Что(Таблица)
.БезУчетаПорядкаСтрок()
.БезУчетаПорядкаКолонок()
.РавнаТаблице(ЭталонТаблица);
```
## Модуль "Утверждения"
### Основные проверки
#### `Проверить(Условие, ДопСообщениеОшибки = "")`
Проверяет, что условие истинно.
```bsl
Утверждения.Проверить(Истина, "Условие должно быть истинным");
```
#### `ПроверитьИстину(Условие, ДопСообщениеОшибки = "")`
Синоним для `Проверить()`. Проверяет, что значение равно `Истина`.
```bsl
Утверждения.ПроверитьИстину(ПолучитьБулевоЗначение());
```
#### `ПроверитьЛожь(Условие, ДопСообщениеОшибки = "")`
Проверяет, что значение равно `Ложь`.
```bsl
Утверждения.ПроверитьЛожь(ПользовательНеАвторизован);
```
### Сравнения значений
#### `ПроверитьРавенство(ПервоеЗначение, ВтороеЗначение, ДопСообщениеОшибки = "")`
Проверяет равенство двух значений.
```bsl
Утверждения.ПроверитьРавенство(42, ПолучитьЧисло());
Утверждения.ПроверитьРавенство("Привет", ПолучитьСтроку());
```
#### `ПроверитьНеРавенство(ПервоеЗначение, ВтороеЗначение, ДопСообщениеОшибки = "")`
Проверяет неравенство двух значений.
```bsl
Утверждения.ПроверитьНеРавенство("", ИмяПользователя);
```
### Числовые сравнения
#### `ПроверитьБольше(Больше, Меньше, ДопСообщениеОшибки = "")`
Проверяет, что первое значение больше второго.
```bsl
Утверждения.ПроверитьБольше(100, ПолученнаяСумма);
```
#### `ПроверитьБольшеИлиРавно(Больше, Меньше, ДопСообщениеОшибки = "")`
Проверяет, что первое значение больше или равно второму.
```bsl
Утверждения.ПроверитьБольшеИлиРавно(0, КоличествоЭлементов);
```
#### `ПроверитьМеньше(ПроверяемоеЗначение1, ПроверяемоеЗначение2, СообщениеОбОшибке = "")`
Проверяет, что первое значение меньше второго.
```bsl
Утверждения.ПроверитьМеньше(ВремяВыполнения, МаксимальноеВремя);
```
#### `ПроверитьМеньшеИлиРавно(ПроверяемоеЗначение1, ПроверяемоеЗначение2, СообщениеОбОшибке = "")`
Проверяет, что первое значение меньше или равно второму.
```bsl
Утверждения.ПроверитьМеньшеИлиРавно(РазмерФайла, МаксимальныйРазмер);
```
### Проверки заполненности
#### `ПроверитьЗаполненность(ПроверяемоеЗначение, ДопСообщениеОшибки = "")`
Проверяет, что значение заполнено (с помощью `ЗначениеЗаполнено()`).
```bsl
Утверждения.ПроверитьЗаполненность(НомерДокумента);
Утверждения.ПроверитьЗаполненность(ДатаСоздания);
```
#### `ПроверитьНеЗаполненность(ПроверяемоеЗначение, ДопСообщениеОшибки = "")`
Проверяет, что значение не заполнено.
```bsl
Утверждения.ПроверитьНеЗаполненность(ДатаУдаления);
```
### Проверки типов
#### `ПроверитьТип(Значение, ТипИлиИмяТипа, ДопСообщениеОшибки = "")`
Проверяет соответствие типа значения ожидаемому типу.
```bsl
Утверждения.ПроверитьТип(ПолученныйОбъект, "Структура");
Утверждения.ПроверитьТип(ПолученныйОбъект, Тип("Массив"));
```
### Проверки дат
#### `ПроверитьДату(Дата, Период, ДопСообщениеОшибки = "")`
Проверяет, что дата входит в указанный период.
```bsl
Период = Новый Структура("ДатаНачала, ДатаОкончания", НачалоДня(ТекущаяДата()), КонецДня(ТекущаяДата()));
Утверждения.ПроверитьДату(ДатаОперации, Период);
```
#### `ПроверитьРавенствоДатСТочностью2Секунды(Дата, Дата2, ДопСообщениеОшибки = "")`
Проверяет равенство дат с точностью до 2 секунд.
```bsl
Утверждения.ПроверитьРавенствоДатСТочностью2Секунды(ВремяВыполнения, ОжидаемоеВремя);
```
### Строковые проверки
#### `ПроверитьЧтоВСтрокеСодержатсяТолькоЦифры(ИсходнаяСтрока, ДопСообщениеОшибки = "")`
Проверяет, что строка содержит только цифры.
```bsl
Утверждения.ПроверитьЧтоВСтрокеСодержатсяТолькоЦифры(Телефон);
```
#### `ПроверитьВхождение(Строка, ПодстрокаПоиска, ДопСообщениеОшибки = "")`
Проверяет, что строка содержит указанную подстроку.
```bsl
Утверждения.ПроверитьВхождение(ОтветСервера, "success");
```
### Проверки исключений и методов
#### `ПроверитьКодСОшибкой(Код, Ошибка, ДопСообщениеОшибки = "")`
Проверяет, что выполнение кода вызывает ошибку с указанным текстом.
```bsl
Утверждения.ПроверитьКодСОшибкой("ВызватьИсключение ""Тестовая ошибка""", "Тестовая ошибка");
```
#### `ПроверитьМетодСуществует(Объект, ИмяМетода, ДопСообщениеОшибки = "")`
Проверяет наличие метода у объекта.
```bsl
Утверждения.ПроверитьМетодСуществует(МойОбъект, "ВыполнитьОбработку");
```