An open API service indexing awesome lists of open source software.

https://github.com/oscript-library/asserts

Библиотека утверждений (assertions) для 1Script
https://github.com/oscript-library/asserts

Last synced: about 1 month ago
JSON representation

Библиотека утверждений (assertions) для 1Script

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
Утверждения.ПроверитьМетодСуществует(МойОбъект, "ВыполнитьОбработку");
```