В 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
.
Этот подход позволяет вам тестировать обработку ошибок в вашем коде, гарантируя, что ошибки выбрасываются и обрабатываются правильно.