Truthiness matchers в Jasmine предназначены для проверки истинности или ложности значений в тестах. Они помогают убедиться, что переменные, выражения или функции возвращают ожидаемое логическое состояние. В основе этих матчеров лежат стандартные концепции Jav * aScript: truthy и falsy значения.
toBeTruthy()toBeTruthy() проверяет, что значение является
truthy, то есть в логическом контексте оно оценивается
как true.
Примеры truthy значений в Jav * aScript:
"hello", "0"1, -5,
3.14{},
[]trueПример использования:
describe('Пример toBeTruthy', () => {
it('проверяет truthy значение', () => {
let value = 'Hello';
expect(value).toBeTruthy();
});
});
Если value будет пустой строкой, числом 0
или null, тест провалится.
toBeFalsy()toBeFalsy() проверяет, что значение является
falsy, то есть в логическом контексте оно оценивается
как false.
Примеры falsy значений в Jav * aScript:
false0 и -0"" (пустая строка)nullundefinedNaNПример использования:
describe('Пример toBeFalsy', () => {
it('проверяет falsy значение', () => {
let value = 0;
expect(value).toBeFalsy();
});
});
Любое значение, которое не входит в список falsy, приведет к падению теста.
toBe(true) и toBe(false)toBeTruthy() и toBeFalsy() проверяют
логическую природу значения, а не его точное сравнение.
Например:
expect(1).toBeTruthy(); // пройдёт
expect(1).toBe(true); // не пройдёт
Первое утверждение оценивает 1 как truthy, второе требует точного
соответствия булевому true.
function isUserLoggedIn() {
return 'token';
}
expect(isUserLoggedIn()).toBeTruthy();
function getData() {
return null;
}
expect(getData()).toBeFalsy();
let items = [1, 2, 3];
expect(items.length).toBeTruthy(); // длина массива > 0
Truthiness matchers часто используют с логическими операциями:
let a = 10;
let b = null;
expect(a && b).toBeFalsy(); // любое выражение с falsy результатом
expect(a || b).toBeTruthy(); // любое выражение с truthy результатом
Такой подход позволяет проверять логическое поведение выражений, а не конкретные значения.
toBeTruthy() и toBeFalsy()
для логических проверок, а не для точного
сравнения.toBe()
или toEqual().Truthiness matchers — простой, но мощный инструмент для тестирования логических условий и состояния данных, позволяющий писать лаконичные и выразительные тесты в Jasmine.