I am trying to write tests for this custom hook using react-hooks-testing-library.
import { deleteArticleById } from '../../API/articles/deleteArticleById';
const useArticleDelete = () => {
const [articleId, setArticleId] = useState(null);
const setArticleIdToDelete = id => {
setArticleId(id);
};
const deleteArticle = useCallback(
async () => {
if (!articleId) {
return;
}
try {
await deleteArticleById(articleId);
setArticleId(null);
} catch (e) {
console.log(e);
}
},
[articleId]
);
return { articleId, setArticleIdToDelete, deleteArticle };
};
export default useArticleDelete;
Here are my tests
import { renderHook, act } from '@testing-library/react-hooks'
import { deleteArticleById } from '../../API/articles/deleteArticleById';
import useArticleDelete from './useArticleDelete';
jest.mock('../../API/articles/deleteArticleById');
describe('useArticleDelete', () => {
test('should use ArticleDelete', () => {
const { result } = renderHook(() => useArticleDelete())
act(() => {
result.current.setArticleIdToDelete(1)
})
expect(result.current.articleId).toBe(1)
});
test('should delete article', async () => {
deleteArticleById.mockResolvedValue({});
const { result } = renderHook(() => useArticleDelete())
act(() => {
result.current.deleteArticle()
})
expect(result.current.articleId).toBeNull()
})
});
Test "should delete article" is written, but the they don't cover lines of code between try..catch in deleteArticle function in useArticleDelete hook.
Please help my out to find out that i'm doing wrong