I have the following function that uses fetch()
to make an API call:
export async function fetchCars(dealershipId) {
return request('path/to/endpoint/' + dealershipId)
.then((response) => {
if (response.ok === false) {
return Promise.reject();
}
return response.json();
})
.then((cars) => {
return parseMyCars(cars);
});
}
I want to test when the call fails (specifically when return Promise.reject()
is returned). I have the following Jest test right now:
(fetch as jest.Mock).mockImplementation(() =>
Promise.resolve({ ok: false })
);
const result = await fetchCars(1);
expect(request).toHaveBeenCalledWith('/path/to/endpoint/1');
expect(result).toEqual(Promise.reject());
but I get a Failed: undefined
message when running the test. I’ve tried using:
(fetch as jest.Mock).mockRejectedValue(() =>
Promise.resolve({ ok: false })
);
but get a similar Failed: [Function anonymous]
message.
What’s the proper way to test for the rejected promise here?