Предполагая, что у меня есть следующая функция, в которой я хочу обрабатывать разные топоры ios ошибочные ответы по-разному.
async fetchData() {
const data = {...};
const response = await axios.post('endpoint_here', data)
.catch((error) => {
if (error.code === SomeKindOfError) {
throw new SomeKindOfError(error.message);
}
if (error.code === AnotherKindOfError) {
throw new AnotherKindOfError(error.message);
}
throw new Error(error.message);
});
return response.data;
}
Как я могу проверить все эти разные случаи в моем тесте с использованием Jest ?
На данный момент мой тест таков:
test('test SomeKindOfError', async () => {
axios.post.mockRejectedValueOnce(new SomeKindOfError('There was an error.'));
await expect(fetchData())
.rejects
.toThrowError(new SomeKindOfError('There was an error.'));
});
Вышеприведенный тест является проходным, но он не очень близок к тому, каким должен быть правильный тест для этой функции.
Я бы хотел иметь возможность проверить, что такое ошибка, возвращаемая Ax ios, и, соответственно, проверить, что мои собственные ошибки были выброшены.
В идеале, это способ высказать ответ об ошибке Axe ios, который позволит мне охватить все различные случаи в моих тестах, что-то вроде следующего:
test('test SomeKindOfError', async () => {
axios.post.mockImplementation(() => Promise.reject({
error: { code: SomeKindOfError.code },
}));
await expect(fetchData())
.rejects
.toThrowError(new SomeKindOfError('There was an error.'));
});