<aside> ✅ 특정 모듈(컴포넌트)이 사양에 잘 동작하는지 자동화된 테스트로 검증
</aside>
⇒ 개발 비용 증가함.
좋은 설계에 대한 사고를 도와준다.
컴포넌트 단위가 크고 강하게 결합되어 있다면, 검증해야할 범위가 커진다.
결합도 : 어떤 모듈이 다른 모듈에 의존하는 정도
결합도가 높아져 버리면, 특정 기능만 따로 검증하기 어려움.
복잡한 구조로 필요한 테스크가 누락될 수 있음
결합도가 높기 때문에 여러 테스트 코드를 수정해야함.
테스트 단위를 어떻게 나눌지 생각하다 보면, 어떤 상태를 어느 컴포넌트에서 관리할지 어떤 컴포넌트에서 api를 호출할지 올바른 설계에 대해 고민하게 된다.
테스트 코드를 기반으로 빠르고 안정적으게 리팩토링을 할 수 있다.
리팩토링 : 결과의 변경없이 코드의 구조를 재정의함.
export const isNumber = (value) => typeof value === 'number';
export const isString = (value) => typeof value === 'string';
위 코드는 테스트 코드가 필요할까?
<aside> ✅ 커버지리지만을 위한 검증은 의미없는 테스트가 될 가능성이 높다.
</aside>
<aside> 💁🏼 100% 커버리지를 목표로 테스트 코드를 작성하면, 오히려 불필요한 리소스가 드는 것 일 수도 있다.
</aside>
<aside> 💁🏼 의미 없는 테스트 (예를들어 단순 렌더링)은 비용 낭비임.
</aside>