대역 객체의 사용
외부 의존성을 직접 실행하는 대신 동작을 제어할 수 있는 객체를 전달한다. 같은 대역도 반환값을 제공하는 데 쓰는지 호출을 검증하는 데 쓰는지에 따라 역할이 달라진다. 도구는 모두를 fake로 다루고 사용 방식에 의미를 둔다.
설정과 실행
특정 호출에 돌려줄 값을 정한 뒤 시험 대상 코드가 대역을 사용하도록 한다. 이를 통해 의존성이 정해진 결과를 줄 때 대상 코드가 어떻게 행동하는지 확인할 수 있다. 실제 의존 구현이 같은 결과를 주는지는 별도의 통합 시험에서 다룬다.
상호작용의 검증
반환된 상태뿐 아니라 필요한 호출이 있었는지도 확인할 수 있다. 객체를 설정할 때와 유사한 표현으로 검증 조건을 작성한다. 내부 구현의 세부 호출까지 모두 고정하면 변경에 취약해질 수 있으므로 확인하려는 계약을 기준으로 조건을 선택한다.
관련 문서
NSubstitute / AutoFixture / Shouldly / NUnit