Базовые утверждения
Утверждения для проверки значений
Доступ к утверждениям обеспечивает метод ЮТест.ОжидаетЧто
, который возвращает инициализированный модуль ЮТУтверждения
, реализующий работу с утверждениями.
Не рекомендуется обращаться к модулю ЮТУтверждения
напрямую, используйте ЮТест.ОжидаетЧто
- Реализован достаточный набор проверок значений
- Большая часть методов - это сравнения фактического и ожи даемого результатов, но есть несколько методов настройки
Что
- устанавливает проверяемый объект. Все дальнейшие проверки будут выполняется с этим объектомМетод
- устанавливает имя и параметры проверяемого метода. Для проверки методов имеются утвержденияВыбрасываетИсключение
иНеВыбрасываетИсключение
Параметр
- добавляет параметр метода. Создан для удобства установки параметров проверяемого методаСвойство
- устанавливает проверяемое свойство и проверяет его наличие.- Последующие проверки, вызванные после этого метода, будут относиться к свойству объекта.
Например,
ЮТест.ОжидаетЧто(Контекст).Свойство("ИмяМетода").Равно("МетодБезИсключение")
эквивалентно проверкеКонтекст.ИмяМетода = "МетодБезИсключение"
- Последующие проверки, вызванные после этого метода, будут относиться к свойству объекта.
Например,
- Методы работы со свойствами позволяют указывать цепочку свойств (доступ к вложенным свойствам через точку)
Например:
Свойство("Контекст.ИмяМетода")
- вложенное свойствоИмеетСвойство("Контекст.ПараметрыМетода[0]")
- элемент вложенной коллекцииНеИмеетСвойства("[0].Свойство")
- свойство элемента коллекции
- Все методы имеют параметр
ОписаниеПроверки
для детального описания.
Доступные методы
Полный и актуальный набор методов смотрите в описании API
Сравнение значений
Равно
- проверка на равенство конкретному значению. Для сериализуемых объектов идет сравнение по значениюНеРавно
- проверка на не равенство конкретному значению. Для сериализуемых объектов идет сравнение по значениюБольше
- проверяемое значение должно быть больше указанногоБольшеИлиРавно
- проверяемое значение должно быть больше или равно указанномуМеньше
- проверяемое значение должно быть меньше указанногоМеньшеИлиРавно
- проверяемое значение должно быть меньше или равно указанномуЭтоНеопределено
- проверяемое значение должно быть равноНеопределено
ЭтоНеНеопределено
- проверяемое значение должно быть не равноНеопределено
ЭтоNull
- проверяемое значение должно быть равноNull
ЭтоНеNull
- проверяемое значение должно быть не равноNull
ЭтоИстина
- проверяемое значение должно быть истинойЭтоНеИстина
- проверяемое значение не должно быть истинойЭтоЛожь
- проверяемое значение должно быть ложьюЭтоНеЛожь
- проверяемое значение не должно быть ложьюВСписке
- проверяемое значение должно входить в список указанных.
Значение = 1;
ЮТУтверждения.Что(Значение)
.Равно(1)
.НеРавно(2)
.Больше(0)
.БольшеИлиРавно(-10)
.Меньше(10)
.МеньшеИлиРавн о(2)
.ЭтоНеИстина()
.ЭтоНеЛожь()
.ВСписке(ЮТКоллекция.ЗначениеВМассиве(0, 1, 2));
Особенности сравнения
- При сравнении значений сравниваются их типы. Это отличается от стандартного поведения 1С:Предприятие, где некоторые значения разных типов могут быть равны, например
1 = Истина
ЮТест.ОжидаетЧто(1 = Истина).ЭтоИстина(); // Проверка успешна
ЮТест.ОжидаетЧто(1).Равно(Истина); // Проверка провалится - Для большинства типов данных реализовано сравнение "по значению", когда сравниваются (рекурсивно) значения реквизитов объекта.
- Поддерживается сравнение структур и соответствий.
Значение1 = Новый Структура("Реквизит", 1);
Значение2 = Новый Структура("Реквизит", 1);
ЮТест.ОжидаетЧто(Значение1 = Значение2).ЭтоИстина(); // Проверка провалится
ЮТест.Ожидает Что(Значение1).Равно(Значение2); // Проверка успешна - Поддерживается сравнение массивов, таблиц и табличных документов.
- Поддерживается сравнение значений упакованных в
ХранилищеЗначения
. - Для прочих сериализуемых значений (не примитивов) сравнение происходит через сериализацию в JSON.
Методы позиционирования
Любое из утверждений можно применять как к самому анализируемому объекту, так и к его свойствам, реквизитам, вложенным элементам.
Например, проверить, наличие заполненной табличной части документа используя выражение
ЮТест.ОжидаетЧто(Документ)
.Свойство("Товары").Заполнено()
.Свойство("Товары[0].Номенклатура").Равно(ОжидаемыйТовар)
;
Благодаря методам Свойство
и Элемент
можно позиционировать ( переключать объект проверки) утверждения на вложенный реквизит/элемент.
Методы Свойство
и Элемент
переключают объект проверки для последующих методов-утверждений. Они будут применяться к значению свойства или элементу коллекции. Но не переключает сам контекст на это значение, а всегда применяется к исходному объекту, помещенному в ОжидаетЧто
.
Свойство
- проверяет наличие свойства и позиционирует дальнейшие проверки на указанном свойстве.Элемент
- проверяет наличие элемента коллекции и позиционирует дальнейшие проверки на указанном элементе. На самом деле это просто алиас (псевдоним) для методаСвойство
и выполняет он тоже самое.Объект
- позиционирует дальнейшие проверки на объекте, указанном в методеОжидаетЧто
.НетСвойства
- проверяет отсутствие свойства и позиционирует дальнейшие проверки на объекте, указанном в методеОжидаетЧто
.
Методы Свойство
и Элемент
всегда вычисляют путь от объекта указанного в ОжидаетЧто
, они не учитывают предыдущие изменения позиции.
Например, чтобы проверить значение реквизита Реквизит.ВложенныйРеквизит
Объект = Новый Структура("Реквизит", Новый Структура("ВложенныйРеквизит", 1));
ЮТест.ОжидаетЧто(Объект)
.Свойство("Реквизит")
.Свойство("ВложенныйРеквизит").Равно(1) // Выбросит исключение, тк объект не содержит свойство "ВложенныйРеквизит"
;
Правильно в таком примере указывать сразу полный путь для свойства.
ЮТест.ОжидаетЧто(Объект)
.Свойство("Реквизит.ВложенныйРеквизит").Равно(1)
;
Методы Свойство
и Элемент
, принимают на вход не просто имя реквизита, а выражение, для перехода к нужному свойству, таким образом вы можете позиционироваться:
- На свойствах объекта
ЮТест.ОжидаетЧто(Объект)
.Свойство("Реквизит").Равно(ОжидаемоеЗначение) - На вложенных свойствах объекта
Свойство("Реквизит.ВложенныйРеквизит")
ЮТест.ОжидаетЧто(Объект)
.Свойство("Реквизит.ВложенныйРеквизит").Равно(ОжидаемоеЗначение) - На элементах коллекций
ЮТест.ОжидаетЧто(Документ.Товары)
.Свойство("[0].Товар").Равно(ОжидаемоеЗначение);
// Или
ЮТест.ОжидаетЧто(Документ)
.Свойство("Товары[0].Товар").Равно(ОжидаемоеЗначение); - Можно позиционировать на элементах коллекции с конца
ЮТест.ОжидаетЧто(Документ.Товары)
.Свойство("[-1].Товар").Равно(ОжидаемоеЗначение) // Последний элемент;
.Элемент(-1).ИмеетСвойство("Товар") // Последний элемент
Проверка заполненности
Заполнено
- проверяет заполненность значенияЮТест.ОжидаетЧто(ОбъектПроверки)
.Заполнено()
.Свойство("Номер").Заполнено();НеЗаполнено
- проверяет незаполненность значенияЗначения = ЮТКоллекции.ЗначениеВМассиве(0, "", " ", Неопределено, Null, '00010101', Новый Структура(), Справочники.Товары.ПустаяСсылка());
Для каждого Значение Из Значения Цикл
ЮТест.ОжидаетЧто(Значение)
.НеЗаполнено()
КонецЦикла;Существует
- проверяет существование (не равноNull
иНеопределено
) значенияЮТест.ОжидаетЧто(ВыборкаЗапроса)
.Свойство("Номер").Существует();НеСуществует
- проверяет не существование (не равноNull
иНеопределено
) значенияЮТест.ОжидаетЧто(ВыборкаЗапроса)
.Свойство("Номер").НеСуществует();