Я пытаюсь протестировать действие, которое сначала отправляет серверу запрос на выборку данных, после извлечения данных в теле ответа есть другой создатель Action, отправленный для извлечения других данных.
При написании тестов действий тесты не охватывают часть создателей действий.
Это мой создатель действий:
export const createCommentAction = (comment, slug) => dispatch => {
dispatch(requestLoadingAction(true));
addToken();
// noinspection JSUnresolvedFunction
return axios.post(`${API_URLS.FETCH_ALL_ARTICLES}${slug}/comment/`, {comment})
.then(resp => resp.data)
.then(async response => {
// noinspection JSUnresolvedVariable
await dispatch(fetchAllArticles());
dispatch(viewOneArticleActionCreator(slug));
notify.show('You have created a comment successfully', 'success', 5000);
}).catch(error => {
dispatch(requestLoadingAction(false));
notify.show(`There's a problem with creating a comment .${error}`, 'error', 4000);
});
};
Это тест, который высмеивает эту конечную точку:
it('should test fetch comments per article', () => {
moxios.stubRequest(API_URLS.FETCH_ALL_ARTICLES+'great-work/comment/', {
status: 201,
response: { comments: {
id: 16,
body: "How can I rebase on 2 different branches",
article: "great-work"
}
},
});
const expecting = {"payload": {"slug": "slug"}, "type": "VIEW_ONE_ARTICLE"};
const expectedActions = [
{'isRequestLoading': true, 'type': 'REQUEST_LOADING'},
{'payload': {}, 'type': 'ADD_MANY_FROM_SERVER'},
{'isRequestLoading': false, 'type': 'REQUEST_LOADING'}
];
store.dispatch(createCommentAction({"comment": {"body": "Thanks for the nice article. "}}, 'great-work'))
.then(() => {
expect(store.getActions()).toEqual(expectedActions);
});
expect(store.dispatch(viewOneArticleActionCreator('slug'))).toEqual(expecting);
jest.mock('react-notify-toast');
});
Таким образом, некоторые строки кода выглядят проверенными / покрытыми, но есть некоторые строки, которые не покрыты, как показано ниже:
dispatch(viewOneArticleActionCreator(slug));
notify.show('You have created a comment successfully', 'success', 5000);
Выше приведены строки, которые не охвачены. Как я могу покрыть их шуткой / энимом.