✏️4.4 테스트 추가하기
테스트를 추가해보자. 테스트는 위험 요인을 중심으로 작성해야 한다. 클래스가 하는 일을 모두 살펴보고 각각의 기능에서 오류가 생길 수 있는 조건을 하나씩 테스트하는 식으로 진행한다. 그러나 public 메서드를 모두 테스트하지는 않는다.
📍테스트의 목적
현재 혹은 향후에 발생하는 버그 찾기. 단순히 필드를 일고 쓰기만 하는 접근자는 테스트 할 필요가 없다.
완벽하게 만드느라 테스트를 수행하지 못하느니, 불오나전한 테스트라도 작성해 실행하는게 낫다.
🧷 총 수익 계산 로직 테스트
230이라는 결과는 코드가 제대로 동작할 거라고 믿고, 제대로 동작한다면 결과 * 2를 덧붙여서 잘못된 값이 나오도록 수정한다. 이 오류를 테스트가 걸러내는게 확인되면, 원래 코드로 되돌린다.
→ 임시 값을 설정했다가 실제 값으로 대체하고, 오류를 심었다가 되돌리는 패턴을 사용
두 테스트에서 중복되는 부분을 제거해보자.
테스터 관련 버그 중 가장 지저분한 유형인 테스트끼리 상호작용하게 하는 공유 픽스처를 생성하는 원인이 된다. 자바스크립트에서 const 키워드는 asia 객체의 내용이 아니라 aisa를 가리키는 참조가 상수임을 뜻한다. 나중에 다른 테스트에서 이 공유 객체의 값을 수정하면 이 픽스처를 사용하는 또 다른 테스트가 실패할 수 있다.
→ 테스트를 실행하는 순서에 따라 결과가 달라진다.
beforEach
구문은 asia
를 초기화하기 때문에 모든 테스트가 자신만의 새로운 aisa
를 사용하게 된다. 픽스처를 새로 만들면 모든 테스트를 독립적으로 구성할 수 있어 결과를 예측할 수 없는 일을 예방할 수 있다.
❓ 테스트는 느려지지 않는다.
불변임이 확실한 픽스처는 공유하기도 한다. 하지만 가장 선호하는 방식은 매번 새로운 픽스처를 만드는 것이다.
Last updated