Для тестирования того, что функция выбрасывает ошибку при определенных условиях, используя Jest, вы можете использовать метод .toThrow(). Вот как это работает:
- Оберните вызов функции в другую функцию: Это необходимо, потому что Jest должен выполнить функцию, чтобы поймать ошибку. Вы можете использовать стандартный синтаксис функции или синтаксис стрелочной функции.
- Напишите тестовый случай и утверждение: Как обычно, но вместо прямого вызова функции в утверждении, передайте созданную вами обертку.
- Добавьте метод
.toThrow(): В конце утверждения добавьте метод.toThrow(). Если функция выбрасывает ошибку, тест пройдет. Если нет, тест провалится.
Пример:
Предположим, у вас есть функция myFunction, которая выбрасывает ошибку, если ей передается неверный тип:
function myFunction(type) {
if (typeof type !== "string") {
throw new TypeError("Invalid type");
}
// Остальная логика функции
}Теперь вы можете написать тест, чтобы убедиться, что эта функция действительно выбрасывает ошибку при передаче неверного типа:
test("throws on invalid type", () => {
const wrapperFunction = () => {
myFunction("invalidType");
};
expect(wrapperFunction).toThrow(TypeError);
});Пояснение:
- Создание обертки: Создаем функцию
wrapperFunction, которая вызываетmyFunctionс аргументом'invalidType'. - Написание теста: В тесте используем
expect(wrapperFunction).toThrow(TypeError), чтобы утверждать, чтоwrapperFunctionвыбрасывает ошибку типаTypeError.
Проверка конкретного сообщения об ошибке:
test("throws on invalid type with specific message", () => {
const wrapperFunction = () => {
myFunction("invalidType");
};
expect(wrapperFunction).toThrow("Invalid type");
});Проверка выброса ошибки без указания типа:
test("throws on invalid type without specifying error type", () => {
const wrapperFunction = () => {
myFunction("invalidType");
};
expect(wrapperFunction).toThrow();
});Этот подход позволяет вам тестировать выброс ошибок в вашем коде, гарантируя, что ошибки выбрасываются и обрабатываются правильно при определенных условиях.