학습) test는 두가지로 나눠져 있음 timetest와 modeltest

time.test.ts는 순수 시간 계산 규칙 테스트 view-model.test.ts는 API 데이터를 화면용 데이터로 바꾸는 규칙 테스트

time.test.ts의 역할 이 파일은 시간표의 기초 계산 규칙만 검증합니다.

예를 들면 이런 것들이죠.

"10:30"을 몇 분으로 볼지 수업 길이를 몇 분으로 계산할지 시간표 시작 시각은 왜 항상 9시인지 가장 늦게 끝나는 수업 기준으로 종료 시각을 어떻게 계산할지 시간이 없는 과목을 어떻게 분리할지 요일을 컬럼 인덱스로 어떻게 바꿀지 즉 이 테스트는 UI도 모르고, API도 모르고, 오직 계산 규칙만 아는 테스트예요.

이런 테스트의 특징은:

빠름 단순함 실패 원인을 찾기 쉬움 재사용 가능한 규칙을 보호함 예를 들면 parseTimeToMinutes(), getDisplayEndHour() 같은 함수가 깨지면 문제가 시간 계산에 있다는 걸 바로 알 수 있어요.

view-model.test.ts의 역할 이 파일은 API 응답을 화면에서 쓰기 좋은 구조로 변환하는 로직을 테스트합니다.

여기서는 더 높은 레벨의 규칙을 다룹니다.

API의 tag를 실제 문구로 바꾸는지 courses를 화면용 blocks로 변환하는지 같은 과목/같은 요일이면 merge하는지 15분 이하는 merge, 16분 이상은 분리하는지 시간이 없는 과목을 하단 텍스트용 목록으로 보내는지 404 응답이면 빈 상태 모델을 만드는지 즉 이 테스트는 **"계산 함수들이 잘 동작한다는 전제 위에서, 그 함수들을 조합해 화면용 구조를 잘 만드는가?"**를 보는 테스트예요.

axios 대신 fetch를 써야하는 이유가 있다면?

과제에서 요구한 것에

인터셉터, 재시도, 캐싱들이 필요없음 ⇒ 굳이 axios를 써야할 필요까진 없음

(인터셉터가 가장 큰 이유)

근데 404처리는 직접해야하는 부분이 있긴함 (에러핸들링이 좀 더 복잡해질 수도?)