리팩터링 4장

박경준·2022년 11월 17일
0

리팩터링 책 요약

목록 보기
4/7

테스트 구축하기

자가 테스트 코드의 가치

테스트는 버그의 원인을 찾는 시간을 현저히 줄여준다.

TDD

테스트를 작성하기 가장 좋은 시점은 프로그래밍을 시작하기 전이다. 테스트를 작성하다보면 원하는 기능을 추가하기 위해 무엇이 필요한지 고민하게 된다. 테스트 - 코딩 - 리팩터링의 주기를 갖는다.

테스트 작성

테스트의 목적은 현재 혹은 향후에 발생하는 버그를 찾는 데 있다. 따라서 단순히 필드를 읽고 쓰기만 하는 접근자는 테스트할 필요가 없다. 테스트를 너무 많이 만들다보면 오히려 필요한 테스트를 놓치기 쉽기 때문이다.
한편, 완벽하게 만드느라 테스트를 수행하지 못하느니, 불완전한 테스트라도 작성해 실행하는게 낫다.

144p.

const asia = new Province(sampleProvinceData())

이런 식의 공통 픽스쳐 정의가 있다면 리팩터링 관점에서 하나로 묶어버리고 싶을것이다.
하지만 '테스트끼리 상호작용하게 하는 공유 픽스처'를 생성하면 테스트에 버그가 생기기 쉽다.
다른 테스트에서 공유 객체의 값을 수정하면 이 픽스처를 사용하는 또 다른 테스트가 실패할 수 있기 때문이다.

let asia;
beforeEach(function() {
		asia = new Province(sampleProvinceData())
	}
)

beforeEach 구문은 각각의 테스트 바로 전에 실행되어 asia를 초기화하기 때문에 모든 테스트가 자신만의 새로운 asia를 사용하게 된다.

경계 조건 검사하기

예외 상황도 테스트 해봐야 한다. 예를 들면 빈 배열, 숫자가 0일때, 음수일때 등등. 수요가 음수일 수 있을까라는 생각을 해보며 로직을 수정해줄수도 있다.

버그를 발견하면 가장 먼저 그 버그를 드러내는 단위 테스트부터 작성하자

profile
빠굥

0개의 댓글