https://medium.com/@thejasonfile/fetch-vs-axios-js-for-making-http-requests-2b261cdd3af5
ершенно новичок в Jest и, по общему признанию, не являюсь экспертом в тестировании асинхронного кода ...
У меня простойFetch
помощник я использую:
export function fetchHelper(url, opts) {
return fetch(url, options)
.then((response) => {
if (response.ok) {
return Promise.resolve(response);
}
const error = new Error(response.statusText || response.status);
error.response = response;
return Promise.reject(error);
});
}
И реализовать это так:
export function getSomeData() {
return (dispatch) => {
return fetchHelper('http://datasource.com/').then((res) => {
dispatch(setLoading(true));
return res.json();
}).then((data) => {
dispatch(setData(data));
dispatch(setLoading(false));
}).catch(() => {
dispatch(setFail());
dispatch(setLoading(false));
});
};
}
Однако я хочу проверить, что правильные отправки отправляются в правильных обстоятельствах и в правильном порядке.
Раньше это было довольно легко сsinon.spy()
, но я не могу понять, как повторить это в Jest. В идеале я бы хотел, чтобы мой тест выглядел примерно так:
expect(spy.args[0][0]).toBe({
type: SET_LOADING_STATE,
value: true,
});
expect(spy.args[1][0]).toBe({
type: SET_DATA,
value: {...},
});
Заранее спасибо за любую помощь или совет!