TDD에 충실한 사람이면 무조건 전진해서 createReservation을 고치기보다는 일단 새 기능을 확인하는 테스트를 작성한다. 첫 번째 테스트에서는 예약 데이터가 제대로 웹 서비스 종단점까지 보내졌는지를 확인한다.
그런데 여기서 “createReservation이 웹 서비스 통신까지 맡아야 하나?” 하는 의문을 품는 건 자기 계발에 상당히 도움이 된다.
describe('createReservation(passenger, flight)', { // Existing tests it('예약 정보를 웹 서비스 종단점으로 전송한다', function() { // createReservation이 웹 서비스 통신까지 맡아야 하나? }); });
정답은 ‘십중팔구 그럴 일은 없다’이다. 웹 서비스 통신 전담 객체가 없으면 하나 만드는(그리고 테스트하는) 편이 좋겠다.
코드 테스트성을 극대화하면 SOLID 원칙을 어긴 코드를 쉽게 솎아낼 수 있다.