기록과 실행을 나누기
대역에 어떤 메서드 호출과 결과를 기대하는지 먼저 기록한다. 재생 상태로 바꾼 뒤 테스트 대상이 대역을 사용하게 한다. 마지막 검증은 기대한 호출이 빠지지 않았는지 확인하는 데 중요하다. 예상하지 않은 호출을 발견하는 일과 필요한 호출이 없었던 일을 발견하는 시점은 다를 수 있다.
엄격함의 선택
일반 대역은 예상 밖 호출을 오류로 다루지만 호출 순서를 기본으로 검사하지는 않는다. 엄격한 대역은 순서도 확인한다. 허용적인 대역은 설정하지 않은 호출에 비어 있는 값을 돌려주는 방식으로 사용할 수 있다. 필요한 계약에 맞춰 선택해야 하며 이름만 보고 검증 범위를 추측하지 않는다.
검사의 범위 지키기
반환값과 호출 횟수, 인자 조건 등을 정할 수 있다. 모든 내부 동작을 기대 목록에 넣으면 정상적인 리팩터링에도 검사가 깨지기 쉽다. 실제 메서드 일부를 유지하는 부분 대역은 그만큼 실제 부작용도 고려해야 한다. 대역을 이용한 단위 검사가 실제 의존 서비스의 호환성을 확인하는 통합 검사를 대신하지는 않는다.
관련 문서
Mockito / Moq / NSubstitute / JUnit