19 KiB
tags | ||
---|---|---|
|
Базовые утверждения
Утверждения для проверки значений
Доступ к утверждениям обеспечивает метод ЮТест.ОжидаетЧто
, который возвращает инициализированный модуль ЮТУтверждения
, реализующий работу с утверждениями.
:::tip
Не рекомендуется обращаться к модулю ЮТУтверждения
напрямую, используйте ЮТест.ОжидаетЧто
:::
- Реализован минимально необходимый набор проверок
- Большая часть методов - это сравнения фактического и ожидаемого результатов, но есть несколько методов настройки
Что
- устанавливает проверяемый объект. Все дальнейшие проверки будут выполняется с этим объектомМетод
- устанавливает имя и параметры проверяемого метода. Для проверки методов имеются утвержденияВыбрасываетИсключение
иНеВыбрасываетИсключение
Параметр
- добавляет параметр метода. Создан для удобства установки параметров проверяемого методаСвойство
- устанавливает проверяемое свойство и проверяет его наличие.- Последующие проверки, вызванные после этого метода, будут относиться к свойству объекта.
Например,
ЮТест.ОжидаетЧто(Контекст).Свойство("ИмяМетода").Равно("МетодБезИсключение")
эквивалентно проверкеКонтекст.ИмяМетода = "МетодБезИсключение"
- Последующие проверки, вызванные после этого метода, будут относиться к свойству объекта.
Например,
- Методы работы со свойствами позволяют указывать цепочку свойств (доступ к вложенным свойствам через точку)
Например:
Свойство("Контекст.ИмяМетода")
- вложенное свойствоИмеетСвойство("Контекст.ПараметрыМетода[0]")
- элемент вложенной коллекцииНеИмеетСвойства("[0].Свойство")
- свойство элемента коллекции
- Все методы имеют параметр
ОписаниеПроверки
для описания конкретной проверки
Доступные методы
:::tip Полный и актуальный набор методов смотрите в описании API :::
Сравнение значений
Равно
- проверка на равенство конкретному значению. Для сериализуемых объектов идет сравнение по значениюНеРавно
- проверка на не равенство конкретному значению. Для сериализуемых объектов идет сравнение по значениюБольше
- проверяемое значение должно быть больше указанногоБольшеИлиРавно
- проверяемое значение должно быть больше или равно указанномуМеньше
- проверяемое значение должно быть меньше указанногоМеньшеИлиРавно
- проверяемое значение должно быть меньше или равно указанномуЭтоНеопределено
- проверяемое значение должно быть равноНеопределено
ЭтоНеНеопределено
- проверяемое значение должно быть не равноНеопределено
ЭтоNull
- проверяемое значение должно быть равноNull
ЭтоНеNull
- проверяемое значение должно быть не равноNull
ЭтоИстина
- проверяемое значение должно быть истинойЭтоНеИстина
- проверяемое значение не должно быть истинойЭтоЛожь
- проверяемое значение должно быть ложьюЭтоНеЛожь
- проверяемое значение не должно быть ложью
Проверка заполненности
Заполнено
- проверяет заполненность значенияНеЗаполнено
- проверяет незаполненность значенияСуществует
- проверяет существование (не равноNull
иНеопределено
) значенияНеСуществует
- проверяет не существование (не равноNull
иНеопределено
) значения
Проверка строк
ИмеетДлину
- проверяет, что строка имеет указанную длинуИмеетДлинуБольше
- проверяет, что длин строки больше указаннойИмеетДлинуМеньше
- проверяет, что длина строки меньше указаннойНеИмеетДлину
- проверяет, что длина строки отличается от указаннойСодержит
- проверяемая строка содержит указанную подстрокуНеСодержит
- проверяемая строка не содержит указанную подстрокуНачинаетсяС
- проверяемая строка начинается с указанной строкиЗаканчиваетсяНа
- проверяемая строка заканчивается на указанную строкуСодержитСтрокуПоШаблону
- проверяемая строка содержит подстроку, соответствующую регулярному выражениюНеСодержитСтрокуПоШаблону
- проверяемая строка не содержит подстроку, соответствующую регулярному выражению
Проверка вхождения значения в интервал
МеждуВключаяГраницы
- проверяемое значение находиться в указанному интервале (включая границы)МеждуИсключаяГраницы
- проверяемое значение находиться в указанному интервале (исключая границы)МеждуВключаяНачалоГраницы
- проверяемое значение находиться в указанному интервале (включая левую границу и исключая правую)МеждуВключаяОкончаниеГраницы
- проверяемое значение находиться в указанному интервале (исключая левую границу и включая правую)
Проверка типа значения
ИмеетТип
- проверяемое значение должно иметь указанный типНеИмеетТип
- тип проверяемого значения должен отличаться от указанного
Проверка выполнения метода
ВыбрасываетИсключение
- проверят, что указанный метод объекта выбрасывает исключениеНеВыбрасываетИсключение
- проверят, что указанный метод объекта не выбрасывает исключение
Проверка наличия свойств/реквизитов
ИмеетСвойство
- проверяемый объект должен содержать указанное свойствоНеИмеетСвойства
- проверяемый объект не содержит указанное свойствоИмеетСвойстваРавные
- проверяемый объект должен содержать указанный набор свойств/реквизитов и значений
Проверка коллекции
ИмеетДлину
- проверяет, что коллекция имеет указанный размерИмеетДлинуБольше
- проверяет, что коллекция имеет размер, который больше указанногоИмеетДлинуМеньше
- проверяет, что коллекция имеет размер, который меньше указанногоНеИмеетДлину
- проверяет, что размер коллекции отличается от указанногоСодержит
- проверяемая коллекция должна содержать указанный элементНеСодержит
- проверяемая коллекция не должна содержать указанный элементКаждыйЭлементСодержитСвойство
- проверяет, что каждый элемент коллекции имеет указанное свойствоКаждыйЭлементСодержитСвойствоСоЗначением
- проверяет, что каждый элемент коллекции имеет указанное свойство, которое равно ожидаемому значениюЛюбойЭлементСодержитСвойство
- проверяет, что в коллекции есть элемент содержащий указанное свойствоЛюбойЭлементСодержитСвойствоСоЗначением
- проверяет, что в коллекции есть элемент содержащий указанное свойство, которое равно ожидаемому значениюКаждыйЭлементСоответствуетПредикату
- проверяет, что элементы коллекции соответствуют переданным условиямЛюбойЭлементСоответствуетПредикату
- проверяет, что коллекция содержит элемент, который соответствует переданным условиям
Проверка на соответствие набору условий, предикату
СоответствуетПредикату
- проверяет, что объект или его свойство соответствует набору условийКаждыйЭлементСоответствуетПредикату
- проверяет, что элементы коллекции соответствуют переданным условиямЛюбойЭлементСоответствуетПредикату
- проверяет, что коллекция содержит элемент, который соответствует переданным условиямСодержит
- проверяемая коллекция должна содержать элемент, который соответствует переданным условиямНеСодержит
- проверяемая коллекция не должна содержать элемент, который соответствует переданным условиям
Проверка методов объекта
Для проверки работы методов объекта есть набор утверждений среди описанных выше (ВыбрасываетИсключение
и НеВыбрасываетИсключение
), но для их работы необходимо выполнить предварительные настройки.
Нужно указать какой методы объекта мы хотим проверить и с какими параметрами, для этого имеются следующие методы api
Метод
- устанавливает имя и параметры проверяемого методаПараметр
- добавляет параметр метода. Создан для удобства установки параметров проверяемого метода
Методы позиционирования
В дополнении к указанным методам утверждений есть возможность применить их к вложенным свойствам. Например, проверить, наличие заполненной табличной части документа используя выражение ОжидаетЧто(Документ).Свойство("Товары").Заполнено()
.
Используя методы Свойство
и Элемент
можно позиционировать утверждения на вложенный реквизит/элемент.
Свойство
- проверяет наличие свойства и позиционирует дальнейшие проверки на указанном свойствеЭлемент
- проверяет наличие элемента коллекции и позиционирует дальнейшие проверки на указанном элементеОбъект
- позиционирует дальнейшие проверки на объекте, указанном в методеЧто
НетСвойства
- проверяет отсутствие свойства и позиционирует дальнейшие проверки на объекте, указанном в методеЧто
Примеры
Базовые проверки
ЮТест.ОжидаетЧто(2 + 3, "2 + 3") // Используя модуль утверждений установим проверяемое значение и пояснение
.ИмеетТип("Число") // Проверим тип
.Заполнено() // Заполненность проверяемого значения
.Больше(0) // Сравним с нулем
.Равно(5); // Проверим ожидаемый результат
Проверка сложного объекта
Объект = ЮТОбщий.ЗначениеВМассиве("1", "2", "3");
ЮТУтверждения.Что(Объект, "Проверка элементов массива")
.Содержит("1")
.НеСодержит(1)
.Элемент(0).Равно("1")
.Элемент(1).Равно("2")
.Элемент(-1).Равно("3")
.Свойство("[00]").Равно("1")
.Свойство("[1]").Равно("2")
.Свойство("[-1]").Равно("3")
.НетСвойства(3)
.НеИмеетСвойства("[3]");
Объект.Добавить(Новый Структура("Первый, Второй", 1, ЮТОбщий.ЗначениеВМассиве(2)));
ЮТУтверждения.Что(Объект, "Проверка свойства элемента массива")
.Свойство("[3].Первый").Равно(1)
.Свойство("[3].Второй[-1]").Равно(2)
.Свойство("[3].Второй[0]").Равно(2)
Проверка вызова метода
ЮТУтверждения.Что(ОМ_ЮТУтверждения)
.Метод("МетодБезИсключение", ЮТОбщий.ЗначениеВМассиве("Исключение"))
.НеВыбрасываетИсключение()
.НеВыбрасываетИсключение("Ожидаемое исключение");
ЮТУтверждения.Что(ОМ_ЮТУтверждения)
.Метод("МетодИсключение", ЮТОбщий.ЗначениеВМассиве("Исключение", 2))
.ВыбрасываетИсключение("Слишком много фактических параметров");
ЮТУтверждения.Что(ОМ_ЮТУтверждения)
.Метод("МетодИсключение", ЮТОбщий.ЗначениеВМассиве("Исключение"))
.ВыбрасываетИсключение("Исключение");
ЮТУтверждения.Что(ОМ_ЮТУтверждения)
.Метод("МетодБезИсключение")
.ВыбрасываетИсключение("Недостаточно фактических параметров");
Проверка соответствия предикату
Дата = ЮТест.Данные().СлучайнаяДата();
Объект = Новый Структура;
Объект.Вставить("Число", 1);
Объект.Вставить("Строка", "1");
Объект.Вставить("Дата", Дата);
Объект.Вставить("Массив", ЮТОбщий.ЗначениеВМассиве(1, "1"));
ПроверкаЧисла = ЮТест.Предикат().Реквизит("Число")
.ИмеетТип(Тип("Число"))
.БольшеИлиРавно(1)
.МеньшеИлиРавно(10)
.Получить();
ПроверкаДаты = ЮТест.Предикат().Реквизит("Дата")
.ИмеетТип(Новый ОписаниеТипов("Дата"))
.Равно(Дата)
.Получить();
ЮТест.ОжидаетЧто(Объект)
.СоответствуетПредикату(ЮТест.Предикат()
.Заполнено()
.ИмеетТип("Структура"))
.СоответствуетПредикату(ПроверкаЧисла)
.СоответствуетПредикату(ПроверкаДаты)
;
Проверка элементов коллекции на соответствие предикату
ТаблицаРезультатов = ЮТест.Данные().ЗагрузитьИзМакета("ОбщийМакет.ЮТ_МакетТестовыхДанных.R2C1:R5C11", ОписанияТипов);
Ютест.ОжидаетЧто(ТаблицаРезультатов)
.ИмеетТип("Массив")
.ИмеетДлину(3)
.КаждыйЭлементСоответствуетПредикату(ЮТест.Предикат()
.Реквизит("Товар").Заполнено().ИмеетТип("СправочникСсылка.Товары")
.Реквизит("Период").Заполнено().ИмеетТип("Дата")
.Реквизит("Количество").Заполнено().ИмеетТип("Число")
.Реквизит("Цена").Заполнено().ИмеетТип("Число")
)