В Jest.js управление ошибками достигается с помощью функций expect и .toThrow(). Функция expect оборачивает код, который может выбросить ошибку, а .toThrow() утверждает, что ошибка действительно выбрасывается. Если ошибка не выбрасывается, тест проваливается.
Пример:
Предположим, у вас есть функция eatOctopus, которая выбрасывает ошибку, если попытаться съесть осьминога:
function eatOctopus() {
throw new Error('octopus is not edible');
}Теперь вы можете написать тест, чтобы убедиться, что эта функция действительно выбрасывает ошибку:
test('throws on octopus', () => {
expect(() => {
eatOctopus();
}).toThrow('octopus is not edible');
});Пояснение:
- Оборачивание кода в функцию: Используем
expect(() => { eatOctopus(); }), чтобы обернуть вызов функции, которая может выбросить ошибку. - Проверка выброса ошибки: Используем
.toThrow('octopus is not edible'), чтобы утверждать, что ошибка с сообщением'octopus is not edible'действительно выбрасывается.
Проверка на конкретный тип ошибки:
Вы также можете проверить, что выбрасывается ошибка конкретного типа, передав класс ошибки в .toThrow():
class EdibleError extends Error {}
function eatOctopus() {
throw new EdibleError('octopus is not edible');
}
test('throws EdibleError on octopus', () => {
expect(() => {
eatOctopus();
}).toThrow(EdibleError);
});Пояснение:
- Создание пользовательского класса ошибки: Создаем класс
EdibleError, который наследуется отError. - Выброс ошибки пользовательского типа: В функции
eatOctopusвыбрасываем экземплярEdibleError. - Проверка на конкретный тип ошибки: Используем
.toThrow(EdibleError), чтобы утверждать, что выбрасывается ошибка типаEdibleError.
Этот подход позволяет вам тестировать обработку ошибок в вашем коде, гарантируя, что ошибки выбрасываются и обрабатываются правильно.