인터페이스에서 대역 만들기
GoMock는 대상 인터페이스에 맞는 대역 구현을 생성해 테스트에 사용한다. 생성한 객체에는 어떤 메서드가 어떤 인자로 호출되어야 하는지와 반환 결과를 설정할 수 있다. 기본 testing 패키지와 결합해 기대 위반을 확인한다. 실제 외부 의존성을 실행하지 않는 만큼 통합 호환성 검사는 따로 필요하다.
생성과 실행의 두 단계
mockgen은 소스 파일이나 패키지, 패키지 아카이브에서 인터페이스 정보를 읽는 모드를 제공한다. 인터페이스가 바뀌면 생성 코드도 다시 맞춰야 한다. 생성기를 실행하는 작업과 대역을 사용하는 테스트 실행은 다른 단계다. 생성 도구의 버전을 관리하면 개발 환경마다 결과가 달라지는 일을 줄이는 데 도움이 된다.
기대의 강도와 유지 구현
인자 매처와 반환 동작을 조합할 수 있지만 모든 내부 호출을 고정하면 테스트가 구현 변경에 취약해질 수 있다. 필요한 계약만 기대에 담는다. 기존 Google 구현과 Uber가 유지하는 포크는 가져오는 경로가 다르므로 이름만 보고 의존성을 섞지 않는다. 허용 횟수를 지나치게 넓히면 실제로 확인하고 싶은 호출 누락을 놓칠 수도 있다.
관련 문서
Testify / Mockito / Moq / FakeItEasy