테스트는 성공한다(그림 2-5).

►그림 2-5
코드를 잘 뜯어보면 메시지가 프로토타입에 있어서 외부에 드러나 있다. 이런 식으로 테스트를 더 견고하게 작성할 수 있다. 단지 함수가 toThrow()할 거라 기대하지 말고, 다음과 같이 바꾸면 더 정확하고 명확한 테스트가 된다.
.toThrowError(container.messages.registerRequiresArgs);
TIP
더욱 확실한 네거티브 테스트(negative test)를 위해서는 에러가 났다는 사실뿐만 아니라 실제 에러 메시지까지 확인하라. 프로토타입이나 함수를 통해 테스트 대상이 가진 메시지를 밖으로 표출하는 것이다.
register 함수는 여전히 아무 일도 하지 않지만, 이 함수만으로는 의존성을 다시 끌어낼 방법이 없으므로 컨테이너에 의존성이 잘 들어갔는지 테스트하기 어렵다. 따라서 자연스레 나머지 반쪽 그림에 해당하는 get 함수에 관심이 쏠린다. 이 함수의 유일한 인자는 조회할 의존성 명이다.
우선 인자부터 확인해보는 게 좋다. 에러 체크는 가능한 한 빨리 해야 바른 코드가 만들어진다. ‘코드를 다 짤 때까지’ 내버려 뒀다간 그사이 다른 관심사로 넘어가 버리기에 십상이다. 예제 2-14처럼 시작하자.
TIP
에러 처리 코드를 제일 먼저 테스트하라. 그다음 다른 업무로 넘어가도 늦지 않다.