Jest предлагает несколько встроенных матчеров для проверки значений в тестах. Матчеры — это функции, которые сравнивают фактические значения с ожидаемыми и позволяют проверять, соответствует ли поведение системы ожиданиям. В контексте истинности матчеры играют важную роль, так как позволяют проверять логические условия.
Основной задачей матчеров истинности является проверка, является ли
значение истинным или ложным. В Jest для этого используются несколько
различных матчеров, которые предоставляют удобный интерфейс для
тестирования логических выражений. Важно понимать, что термин
«истинность» в Jest относится не только к булевым значениям
true или false, но и к различным типам данных,
которые могут быть приведены к булевым значениям при использовании
условий.
toBeTruthy()Матчер toBeTruthy() проверяет, что значение является
истинным. В JavaScript есть несколько значений, которые
при приведении к логическому типу (Boolean)
интерпретируются как true. Например, любые непустые строки,
ненулевые числа, объекты и массивы.
Пример:
test('проверка на истинность', () => {
expect('string').toBeTruthy(); // Строки всегда истинны
expect(1).toBeTruthy(); // Число 1 всегда истинно
expect([1, 2, 3]).toBeTruthy(); // Массив всегда истинный
});
Этот матчеры полезен, когда нужно удостовериться, что значение не
является ни null, ни undefined, ни пустым, так
как все эти значения в JavaScript считаются ложными.
toBeFalsy()Матчер toBeFalsy() проверяет, что значение является
ложным. В JavaScript типы данных, которые приводятся к
false, включают: false, 0, пустую
строку "", null, undefined, и
NaN.
Пример:
test('проверка на ложность', () => {
expect(false).toBeFalsy(); // Ложное значение
expect(0).toBeFalsy(); // Число 0 — ложное
expect('').toBeFalsy(); // Пустая строка — ложная
expect(null).toBeFalsy(); // null — ложное
expect(undefined).toBeFalsy(); // undefined — ложное
});
Этот матчеры полезен для проверки, что значение не удовлетворяет ожиданиям и является одним из ложных значений, предусмотренных языком.
В контексте JavaScript важно помнить, что приведение типов может создать некоторые неожиданные результаты при проверках истинности. Например:
test('неожиданное приведение типов', () => {
expect([]).toBeTruthy(); // Массив всегда истинный
expect({}).toBeTruthy(); // Объект всегда истинный
expect('0').toBeTruthy(); // Непустая строка всегда истинна
expect(0).toBeFalsy(); // Число 0 всегда ложное
});
Эти примеры подчеркивают, что даже если объект или массив пусты, они считаются истинными значениями.
В Jest можно использовать матчеры истинности и в асинхронных тестах.
Когда ожидаемое значение зависит от асинхронных операций, можно
комбинировать матчеры с асинхронными функциями, например, с
async/await.
Пример с использованием промиса:
test('проверка асинхронной операции', async () => {
const result = await someAsyncFunction();
expect(result).toBeTruthy();
});
В этом случае тест будет ждать выполнения асинхронной функции, а затем проверять, является ли возвращаемое значение истинным.
false, даже если это не было задумано.Матчеры истинности являются важным инструментом для создания надежных тестов в Jest. Они позволяют убедиться в правильности работы логики, обеспечивая точные и четкие проверки значений, которые влияют на принятие решений в коде.