Числовые матчеры в Jest — это набор инструментов для выполнения точных проверок числовых значений в тестах. Они позволяют проверять различные характеристики чисел, такие как равенство, диапазоны, сравнение и другие критерии. Использование числовых матчеров помогает сделать тесты более выразительными и четкими, а также повысить читаемость и точность проверок.
Для проверки того, что два числа равны, используется матчеры
toBe() и toEqual().
toBe() проверяет строгое равенство,
что означает сравнение значений без преобразования типов. Этот матчинг
наиболее эффективен для примитивных типов данных, включая числа.Пример использования toBe():
test('проверка равенства чисел', () => {
expect(2 + 2).toBe(4);
});
toEqual() может использоваться для
проверки глубокой эквивалентности объектов и массивов. Для чисел
результат будет аналогичен toBe(), но
toEqual() более универсален, так как поддерживает сложные
структуры данных.Пример использования toEqual():
test('проверка эквивалентности чисел', () => {
expect({ value: 2 + 2 }).toEqual({ value: 4 });
});
Однако, в контексте чисел использование toBe()
предпочтительнее для простоты и ясности.
Для проверки, что два числа не равны, используется матчеры
not.toBe() и not.toEqual().
Пример использования not.toBe():
test('проверка неравенства чисел', () => {
expect(2 + 2).not.toBe(5);
});
Пример использования not.toEqual():
test('проверка неравенства чисел', () => {
expect({ value: 2 + 2 }).not.toEqual({ value: 5 });
});
Для проверки чисел в определённом диапазоне можно использовать
матчеры toBeGreaterThan(),
toBeGreaterThanOrEqual(), toBeLessThan(), и
toBeLessThanOrEqual(). Эти матчеры дают возможность
удостовериться в том, что число находится в нужных границах.
toBeGreaterThan() проверяет, что
значение больше заданного.Пример:
test('проверка, что число больше', () => {
expect(5).toBeGreaterThan(4);
});
toBeGreaterThanOrEqual() проверяет,
что значение больше либо равно заданному.Пример:
test('проверка, что число больше или равно', () => {
expect(5).toBeGreaterThanOrEqual(5);
});
toBeLessThan() проверяет, что значение
меньше заданного.Пример:
test('проверка, что число меньше', () => {
expect(3).toBeLessThan(4);
});
toBeLessThanOrEqual() проверяет, что
значение меньше либо равно заданному.Пример:
test('проверка, что число меньше или равно', () => {
expect(3).toBeLessThanOrEqual(3);
});
Для чисел с плавающей точкой стандартные матчеры toBe()
и toEqual() могут не работать должным образом из-за
особенностей представления чисел в JavaScript. В таких случаях
используется матчеры toBeCloseTo().
toBeCloseTo() позволяет проверять, что
два числа совпадают с заданной точностью, что особенно полезно при
тестировании арифметических операций с плавающей точкой.
Пример:
test('проверка с точностью для чисел с плавающей точкой', () => {
expect(0.1 + 0.2).toBeCloseTo(0.3, 5);
});
В данном примере тестирует сложение чисел с плавающей точкой, где результат может иметь небольшую погрешность. Второй аргумент указывает на количество знаков после запятой, с которым нужно выполнить проверку.
В Jest можно комбинировать числовые матчеры с объектами и массивами.
Например, если необходимо проверить, что в объекте определённое число
соответствует заданным критериям, можно использовать методы
expect() в сочетании с числовыми матчерами.
Пример:
test('проверка числовых значений в объекте', () => {
const data = { value: 100 };
expect(data.value).toBeGreaterThan(50);
});
Пример с массивом:
test('проверка числовых значений в массиве', () => {
const numbers = [1, 2, 3, 4];
expect(numbers[2]).toBeLessThan(5);
});
toBe() для простых числовых
сравнений. Это делает ваш код лаконичным и точным.toBeCloseTo(), чтобы избежать ошибок при сравнении
значений с малой погрешностью.toBeGreaterThan(), toBeLessThan() и их
вариации.Использование числовых матчеров в Jest позволяет легко и понятно тестировать числовые значения, обеспечивая высокую точность и минимизацию ошибок.