Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 개발 공부
- 프론트엔드
- wil
- FE
- 알고리즘
- javascript
- webGPU
- 자바스크립트
- 회고
- 항해
- React
- 성능최적화
- 보안
- 항해99
- 테스트 코드
- frontend
- 항해플러스
- 개발공부
- 성장일지
- rust
- 홋카이도
- 항해 플러스 프론트엔드
- typescript
- 개발자
- 분기 회고
- React Query
- 항해 플러스
- 백준
- naver
- GPU
Archives
- Today
- Total
느릿늘있
[ Vitest ] 테스트 코드 개선 경험 기록 본문
1. 문제 코드
it('검색어에 맞는 이벤트만 필터링해야 한다', async () => {
const { result: searchResult } = renderHook(() => useSearch(events, new Date(), 'month'));
const { filteredEvents, setSearchTerm } = result.current;
act(() => {
searchResult.current.setSearchTerm('헬스장');
});
filteredEvents.forEach((event: Event) => {
const searchTargets: EventKeys[] = ['title', 'description', 'location'];
const isFiltered = searchTargets.some((target: EventKeys) => event[target] === '헬스장');
expect(isFiltered).toBeTruthy();
});
});
- 문제점 1 : result의 current를 구조분해할당 하면서 act 이후의 filteredEvents가 변경되지 않은 값으로 테스트하고 있음
- 문제점 2 : expect를 forEach문 안에서 실행함으로써 테스트 동작이 많아지고 예측이 어려워지고 있음
2. 해결 코드
it('검색어에 맞는 이벤트만 필터링해야 한다', async () => {
const { result: searchResult } = renderHook(() => useSearch(events, new Date(), 'month'));
const { setSearchTerm } = result.current;
act(() => {
searchResult.current.setSearchTerm('헬스장');
});
const { filteredEvents } = result.current; // act 이후 바뀐 current에서 조회
const result = filteredEvents.every((event: Event) => {
const searchTargets: EventKeys[] = ['title', 'description', 'location'];
const isFiltered = searchTargets.some((target: EventKeys) => event[target] === '헬스장');
return isFiltered;
});
expect(result).toBeTruthy(); // Array.every로 전체가 참인지 한번만 체크
});
- 해결 1 : act 이후 변경된 current로 이후 검증 진행
- 해결 2 : Array.every 매서드로 테스트 결과 한 번만 체크
'삽질로그' 카테고리의 다른 글
safari fit-content 이슈 (0) | 2025.05.19 |
---|---|
클로저를 활용한 grid rowid 구현 (0) | 2024.10.12 |
[JS] 배열 탐색 : forEach, filter, find (0) | 2023.11.29 |
[개발 환경] WSL2 UNC 경로 에러 (0) | 2023.07.25 |
[SQL] 쿼리문 변경을 통한 성능 향상 경험 (0) | 2023.06.13 |