16 KiB
Утверждения
Каждый тестовый сценарий должен проверить результат работы тестируемого метода, будь то функция или процедура.
Для написания таких проверок реализован механизм утверждений, позволяющий в лаконичной форме описать свои ожидания, требования к результату.
Доступ к утверждениям обеспечивает метод ЮТест.ОжидаетЧто
, который возвращает инициализированный модуль ЮТУтверждения
, реализующий работу с утверждениями.
Особенности реализации утверждений
-
Реализованы по модели текучих выражений, с целью повышения удобства и читаемости тестов
ЮТест.ОжидаетЧто(Контекст) .ИмеетТип("Структура") .Свойство("ПрефиксОшибки").Равно("Контекст метода с параметрами") .Свойство("ИмяМетода").Заполнено().Равно("МетодБезИсключение") .Свойство("ПараметрыМетода").ИмеетТип("Массив").ИмеетДлину(1);
-
Реализован минимально необходимый набор проверок
-
Большая часть методов - это сравнения фактического и ожидаемого результатов, но есть несколько методов настройки
Что
- устанавливает проверяемый объект. Все дальнейшие проверки будут выполняется с этим объектомМетод
- устанавливает имя и параметры проверяемого метода. Для проверки методов имеются утвержденияВыбрасываетИсключение
иНеВыбрасываетИсключение
Параметр
- добавляет параметр метода. Создан для удобства установки параметров проверяемого методаСвойство
- устанавливает проверяемое свойство и проверяет его наличие.- Последующие проверки, вызванные после этого метода, будут относиться к свойству объекта.
Например,
ЮТест.ОжидаетЧто(Контекст).Свойство("ИмяМетода").Равно("МетодБезИсключение")
эквивалентно проверкеКонтекст.ИмяМетода = "МетодБезИсключение"
- Последующие проверки, вызванные после этого метода, будут относиться к свойству объекта.
Например,
-
Методы работы со свойствами позволяют указывать цепочку свойств (доступ к вложенным свойствам через точку) Например:
Свойство("Контекст.ИмяМетода")
- вложенное свойствоИмеетСвойство("Контекст.ПараметрыМетода[0]")
- элемент вложенной коллекцииНеИмеетСвойства("[0].Свойство")
- свойство элемента коллекции
-
Все методы имеют параметр
ОписаниеПроверки
для описания конкретной проверки
Доступные методы
- Сравнить значение используя
Равно
- проверка на равенство конкретному значению. Для сериализуемых объектов идет сравнение по значениюНеРавно
- проверка на не равенство конкретному значению. Для сериализуемых объектов идет сравнение по значениюБольше
- проверяемое значение должно быть больше указанногоБольшеИлиРавно
- проверяемое значение должно быть больше или равно указанномуМеньше
- проверяемое значение должно быть меньше указанногоМеньшеИлиРавно
- проверяемое значение должно быть меньше или равно указанномуЭтоНеопределено
- проверяемое значение должно быть равноНеопределено
ЭтоНеНеопределено
- проверяемое значение должно быть не равноНеопределено
Это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)) .ВыбрасываетИсключение("Слишком много фактических параметров"); ЮТУтверждения.Что(ОМ_ЮТУтверждения) .Метод("МетодИсключение", ЮТОбщий.ЗначениеВМассиве("Исключение")) .ВыбрасываетИсключение("Исключение"); ЮТУтверждения.Что(ОМ_ЮТУтверждения) .Метод("МетодБезИсключение") .ВыбрасываетИсключение("Недостаточно фактических параметров");