Я пытаюсь проверить, достигнут ли блок действия .catch(()
действия Vuex при определенном ответе API, и что он возвращает ошибку. catch
достигнут, но тест не пройден, так как он ожидает фактического ответа API вместо выдаваемой мной ошибки.
Действие, которое я тестирую:
getPageItems ({ commit, state, }) {
const page = state.page;
return testApi.fetch(`${pageNumber}`).then((response) => {
try {
isValid(response);
commit('addItemsToList', response);
} catch (error) {
console.error(error);
}
},
export const isValid = (response) => {
response.name ? true : throw new Error('invalid item');
};
Тест, который у меня есть:
test('errors caught', async () => {
const item = {};
const commit = jest.fn();
const state = {
pageNumber: 2,
};
testApi.fetch.mockRejectedValue(item);
expect.assertions(1);
await getPageItems({ commit, state, }).catch((e) => expect(e).toBe('invalid item');
});
Этот тест не пройден, так как ожидается, что e
будет item
(ответ), а не ошибка. Я не уверен, почему это так.