백엔드는 테스트 오류 메세지는 이제 익숙해졌고, 오류가 나면 '아, 이걸 안해줬네!' 하고 떠올릴 수 있게 되었지만 프론트 테스트는 일단은 오류가 나면 하나씩 모킹해주면서 오류를 하나씩 줄여나가는 식으로 하고 있다.
결국에는 통과되긴 했지만 통과된 최종 코드를 보니까 관련되어 있는 함수나 객체는 다 모킹해준 식이었다. 코드를 짜면서 어디서부터 어디까지 모킹해줘야 하는 지 한 눈에 알면 좋을텐데 이게 모킹을 해주어야 해결되는 오류인지, 코드를 잘못 짠 건지, 오타가 난 건지 헷갈릴 때가 있다. 이미지를 모킹해주고, 관련 객체와 함수를 모킹해주니 테스트가 통과되었다.
import { render, screen, waitFor, } from '@testing-library/react';
import ProductDetailPage from './ProductDetailPage';
const navigate = jest.fn();
jest.mock('../assets', () => ({
iconImages: {
icons: {
minusBlack: 'MinusBlack.png',
minusGray: 'MinusGray.png',
plusBlack: 'PlusBlack.png',
},
},
}));
jest.mock('react-router-dom', () => ({
useNavigate() {
return navigate;
},
useParams: () => ({
id: '1',
}),
}));
jest.mock('../hooks/useProductStore', () => () => ({
product: {
id: 1,
price: 1000,
name: 'sofa',
maker: 'brand',
description: 'this is sofa',
imageUrl: '...',
},
resetProductState: jest.fn(),
fetchProduct: jest.fn(),
totalPrice: jest.fn(),
}));
describe('ProductDetailPage', () => {
it('상품 상세 페이지', async () => {
render(
<ProductDetailPage />,
);
await waitFor(() => {
screen.getByText(/선물하기/);
});
});
});
그런데 배너 이미지가 들어있는 ProductBanner 테스트에서는 이미지를 모킹해주지 않아도 통과가 되었는데, 이유가 무엇인지,,,내일의 액션플랜으로 알아보기로 하자.
'TIL' 카테고리의 다른 글
레벨 테스트 작업 로그 #9 (22.12.07 TIL) (0) | 2022.12.07 |
---|---|
레벨 테스트 작업 로그 #8 - 테스트 코드 작성, 코딩 시간 늘리기 (22.12.06 TIL) (0) | 2022.12.06 |
레벨 테스트 작업 로그 #6 - 로그인 프론트 작업 중 (22.12.04 TIL) (0) | 2022.12.04 |
SQL - 데이터베이스와 SQL (22.12.03 TIL) (0) | 2022.12.03 |
레벨 테스트 작업 로그 #5 - 상품 상세 페이지 구현 (22.12.02 TIL) (1) | 2022.12.02 |
댓글