WEBBOOK CHAPTER

테스트를 많이 말고, 위험을 정확히: 3장. 좋은 unit test는 정책을 설명한다

3장. 좋은 unit test는 정책을 설명한다

외부 DB·시간·랜덤·네트워크를 경계 밖으로 밀고 입력과 결과가 분명한 정책을 시험한다. 구현 순서나 private method를 고정하지 않는다. 예약 가격, 상태 전이, 권한 판단처럼 도메인 언어가 테스트 이름에 드러나야 한다.


test('같은 슬롯은 한 기사에게만 확정된다', () => {
  const first = assign(openSlot, 'worker-a');
  expect(() => assign(first, 'worker-b')).toThrow('SLOT_TAKEN');
});

시간은 clock, ID는 generator, 외부 호출은 port로 주입한다. mock 호출 횟수보다 업무 결과를 검증한다. mutation testing은 조건 하나를 뒤집었을 때 테스트가 잡는지 점검하는 보조 수단으로 사용한다.