Asserts
Библиотека утверждений (assertions) для 1Script
Install / Use
/learn @oscript-library/AssertsREADME
Утверждения
Добавляет в скрипт функционал "Утверждений" (assertions). Возможны 2 стиля использования:
- Модуль "Утверждения" - утверждения в стиле фреймворка xUnitFor1C
- Свойство глобального контекста "Ожидаем" - fluent-API утверждений в стиле BDD
Краткий пример
МояПеременная = ВычислитьЧтоТоТам();
// xUnit style
Утверждения.ПроверитьРавенство(1, МояПеременная, "Моя переменная должна быть строго равна 1");
// BDD style
Ожидаем.Что(МояПеременная).Равно(1);
Модуль "Ожидаем"
BDD стиль предоставляет fluent API для создания более читаемых утверждений.
Базовый синтаксис
Ожидаем.Что(ПроверяемоеЗначение).МетодПроверки(ПараметрыПроверки);
Отрицание
Не_() / ЭтоНе()
Инвертирует результат следующей проверки.
Ожидаем.Что(Значение).Не_().Равно(0);
Ожидаем.Что(Строка).ЭтоНе().Заполнено();
Логические проверки
ЭтоИстина() / ЕстьИстина()
Проверяет, что значение равно Истина.
Ожидаем.Что(УсловиеВыполнено).ЭтоИстина();
ЭтоЛожь() / ЕстьЛожь()
Проверяет, что значение равно Ложь.
Ожидаем.Что(ОшибкаВозникла).ЭтоЛожь();
Равно(ОжидаемоеЗначение)
Проверяет равенство значений.
Ожидаем.Что(Результат).Равно(42);
Ожидаем.Что(Статус).Равно("Готов");
Числовые сравнения в BDD
Больше(МеньшееЗначение)
Проверяет, что значение больше указанного.
Ожидаем.Что(Количество).Больше(0);
БольшеИлиРавно(МеньшееИлиРавноеЗначение) / Минимум(МинимальноеЗначение)
Проверяет, что значение больше или равно указанному.
Ожидаем.Что(Возраст).БольшеИлиРавно(18);
Ожидаем.Что(Зарплата).Минимум(10000);
Меньше(БольшееЗначение)
Проверяет, что значение меньше указанного.
Ожидаем.Что(ВремяОтклика).Меньше(1000);
МеньшеИлиРавно(БольшееИлиРавноеЗначение) / Максимум(МаксимальноеЗначение)
Проверяет, что значение меньше или равно указанному.
Ожидаем.Что(Оценка).МеньшеИлиРавно(10);
Ожидаем.Что(Размер).Максимум(1024);
Между(НачальноеЗначение, КонечноеЗначение)
Проверяет, что значение находится в указанном диапазоне.
Ожидаем.Что(Процент).Между(0, 100);
Проверки существования и заполненности
Заполнено()
Проверяет, что значение заполнено.
Ожидаем.Что(НомерЗаказа).Заполнено();
Существует()
Проверяет, что значение не равно Неопределено и не равно Null.
Ожидаем.Что(НайденныйЭлемент).Существует();
ЭтоНеопределено() / ЕстьНеопределено()
Проверяет, что значение равно Неопределено.
Ожидаем.Что(НеинициализированнаяПеременная).ЭтоНеопределено();
ЭтоNull() / ЕстьNull()
Проверяет, что значение равно Null.
Ожидаем.Что(ПустаяСсылка).ЭтоNull();
Проверки типов в BDD
ИмеетТип(ТипИлиИмяТипа)
Проверяет соответствие типа значения ожидаемому.
Ожидаем.Что(МойОбъект).ИмеетТип("Структура");
Ожидаем.Что(СписокЗначений).ИмеетТип(Тип("Массив"));
Работа с коллекциями
Содержит(ИскомоеЗначение)
Проверяет содержание элемента в коллекции или подстроки в строке.
// Для строк
Ожидаем.Что(ТекстОшибки).Содержит("не найден");
// Для массивов
Ожидаем.Что(СписокФайлов).Содержит("config.json");
// Для структур/соответствий - проверяет значения
Ожидаем.Что(Настройки).Содержит("Администратор");
ИмеетДлину(ОжидаемаяДлина)
Проверяет длину строки или количество элементов в коллекции.
Ожидаем.Что(Пароль).ИмеетДлину(8);
Ожидаем.Что(МассивДанных).ИмеетДлину(5);
Проверки методов и исключений
ИмеетМетод(ИмяМетода)
Проверяет наличие метода у объекта.
Ожидаем.Что(МойОбъект).ИмеетМетод("ВыполнитьОбработку");
Метод(ИмяМетода, ПараметрыМетода).ВыбрасываетИсключение(ФрагментИсключения)
Проверяет, что вызов метода вызывает исключение.
Ожидаем.Что(КалькуляторОбъект).Метод("Разделить", Новый Массив).ВыбрасываетИсключение("деление на ноль");
Работа с таблицами значений
РавнаТаблице(ОжидаемоеЗначение, СравнитьТолькоСТруктуру = Ложь)
Сравнивает таблицы значений.
Ожидаем.Что(ПолученнаяТаблица).РавнаТаблице(ОжидаемаяТаблица);
ИмеетРавнуюСтруктуруСТаблицей(ОжидаемоеЗначение)
Сравнивает только структуру таблиц (колонки и их типы).
Ожидаем.Что(НоваяТаблица).ИмеетРавнуюСтруктуруСТаблицей(ШаблонТаблицы);
СодержитСтрокуТаблицы(ОжидаемоеЗначение)
Проверяет наличие строки с указанными значениями в таблице.
СтрокаПоиска = Новый Структура("Код, Наименование", "001", "Товар1");
Ожидаем.Что(ТаблицаТоваров).СодержитСтрокуТаблицы(СтрокаПоиска);
Модификаторы сравнения
БезУчетаПорядкаСтрок()
Игнорирует порядок строк при сравнении таблиц.
Ожидаем.Что(Таблица1).БезУчетаПорядкаСтрок().РавнаТаблице(Таблица2);
БезУчетаПорядкаКолонок()
Игнорирует порядок колонок при сравнении таблиц.
Ожидаем.Что(Таблица1).БезУчетаПорядкаКолонок().РавнаТаблице(Таблица2);
БезУчетаИменКолонок()
Игнорирует имена колонок при сравнении таблиц.
Ожидаем.Что(Таблица1).БезУчетаИменКолонок().РавнаТаблице(Таблица2);
НеУчитыватьПорядокВМассиве()
Игнорирует порядок элементов при сравнении массивов.
Ожидаем.Что(Массив1).НеУчитыватьПорядокВМассиве().РавноМассиву(Массив2);
Продвинутые сравнения
Идентично(ОжидаемоеЗначение)
Выполняет глубокое сравнение объектов (структур, массивов, таблиц).
Ожидаем.Что(СложнаяСтруктура).Идентично(ОжидаемаяСтруктура);
РавноМассиву(ОжидаемоеЗначение)
Сравнивает массивы с детальной диагностикой различий.
Ожидаем.Что(ПолученныйМассив).РавноМассиву(ОжидаемыйМассив);
РавноСтруктуреИлиСоответствию(ОжидаемоеЗначение)
Сравнивает структуры или соответствия с детальной диагностикой.
Ожидаем.Что(НастройкиСистемы).РавноСтруктуреИлиСоответствию(ОжидаемыеНастройки);
Цепочки утверждений
BDD стиль поддерживает цепочки утверждений для комплексных проверок:
Ожидаем.Что(Пользователь)
.ИмеетТип("Структура")
.Содержит("Администратор")
.ИмеетДлину(3);
Ожидаем.Что(Таблица)
.БезУчетаПорядкаСтрок()
.БезУчетаПорядкаКолонок()
.РавнаТаблице(ЭталонТаблица);
Модуль "Утверждения"
Основные проверки
Проверить(Условие, ДопСообщениеОшибки = "")
Проверяет, что условие истинно.
Утверждения.Проверить(Истина, "Условие должно быть истинным");
ПроверитьИстину(Условие, ДопСообщениеОшибки = "")
Синоним для Проверить(). Проверяет, что значение равно Истина.
Утверждения.ПроверитьИстину(ПолучитьБулевоЗначение());
ПроверитьЛожь(Условие, ДопСообщениеОшибки = "")
Проверяет, что значение равно Ложь.
Утверждения.ПроверитьЛожь(ПользовательНеАвторизован);
Сравнения значений
ПроверитьРавенство(ПервоеЗначение, ВтороеЗначение, ДопСообщениеОшибки = "")
Проверяет равенство двух значений.
Утверждения.ПроверитьРавенство(42, ПолучитьЧисло());
Утверждения.ПроверитьРавенство("Привет", ПолучитьСтроку());
ПроверитьНеРавенство(ПервоеЗначение, ВтороеЗначение, ДопСообщениеОшибки = "")
Проверяет неравенство двух значений.
Утверждения.ПроверитьНеРавенство("", ИмяПользователя);
Числовые сравнения
ПроверитьБольше(Больше, Меньше, ДопСообщениеОшибки = "")
Проверяет, что первое значение больше второго.
Утверждения.ПроверитьБольше(100, ПолученнаяСумма);
ПроверитьБольшеИлиРавно(Больше, Меньше, ДопСообщениеОшибки = "")
Проверяет, что первое значение больше или равно второму.
Утверждения.ПроверитьБольшеИлиРавно(0, КоличествоЭлементов);
ПроверитьМеньше(ПроверяемоеЗначение1, ПроверяемоеЗначение2, СообщениеОбОшибке = "")
Проверяет, что первое значение меньше второго.
Утверждения.ПроверитьМеньше(ВремяВыполнения, МаксимальноеВремя);
ПроверитьМеньшеИлиРавно(ПроверяемоеЗначение1, ПроверяемоеЗначение2, СообщениеОбОшибке = "")
Проверяет, что первое значение меньше или равно второму.
Утверждения.ПроверитьМеньшеИлиРавно(РазмерФайла, МаксимальныйРазмер);
Проверки заполненности
ПроверитьЗаполненность(ПроверяемоеЗначение, ДопСообщениеОшибки = "")
Проверяет, что значение заполнено (с помощью ЗначениеЗаполнено()).
Утверждения.ПроверитьЗаполненность(НомерДокумента);
Утверждения.ПроверитьЗаполненность(ДатаСоздания);
ПроверитьНеЗаполненность(ПроверяемоеЗначение, ДопСообщениеОшибки = "")
Проверяет, что значение не заполнено.
Утверждения.ПроверитьНеЗаполненность(ДатаУдаления);
Проверки типов
ПроверитьТип(Значение, ТипИлиИмяТипа, ДопСообщениеОшибки = "")
Проверяет соответствие типа значения ожидаемому типу.
Утверждения.ПроверитьТип(ПолученныйОбъект, "Структура");
Утверждения.ПроверитьТип(ПолученныйОбъект, Тип("Массив"));
Проверки дат
ПроверитьДату(Дата, Период, ДопСообщениеОшибки = "")
Проверяет, что дата входит в указанный период.
Период = Новый Структура("ДатаНачала, ДатаОкончания", НачалоДня(ТекущаяДата()), КонецДня(ТекущаяДата()));
Утверждения.ПроверитьДату(ДатаОперации, Период);
ПроверитьРавенствоДатСТочностью2Секунды(Дата, Дата2, ДопСообщениеОшибки = "")
Проверяет равенство дат с точностью до 2 секунд.
Утверждения.ПроверитьРавенствоДатСТочностью2Секунды(ВремяВыполнения, ОжидаемоеВремя);
Строковые проверки
ПроверитьЧтоВСтрокеСодержатсяТолькоЦифры(ИсходнаяСтрока, ДопСообщениеОшибки = "")
Проверяет, что строка содержит только цифры.
Утверждения.ПроверитьЧтоВСтрокеСодержатсяТолькоЦифры(Телефон);
ПроверитьВхождение(Строка, ПодстрокаПоиска, ДопСообщениеОшибки = "")
Проверяет, что строка содержит указанную подстроку.
Утверждения.ПроверитьВхождение(ОтветСервера, "success");
