단위테스트 (블라디미르 코리코프)
에서 이어지는 글입니다.
1.2 도구로서의 목과 테스트 대역으로서의 목
Mock은 두가지 의미가 있다.
목 라이브러리(mocking library)의 클래스도 목으로 부르며
테스트 대역으로서의 목 도 있다.
1.3 스텁으로 상호 작용을 검증하지 말라
테스트에서 거짓 양성을 피하고 리팩터링 내성을 향상시키는 방법은 구현 세부 사항이 아니라 최종 결과(이상적으로 비개발자들에게 의미가 있어야 함)를 검증하는 것 뿐이다.
최종결과가 아닌 사항을 검증하는 것을 과잉 명세(overspecification)이라고 부른다.
1.4 목과 스텁 함께 쓰기
같이 사용할 수 있다.
1.5 목과 스텁은 명령과 조회에 어떻게 관련돼 있는가?
명령 조회 분리 (CQS, Command Query Seperation) 에 따르면
모든 메서드는 명령이거나 조회여야 하며, 이 둘을 혼용해서는 안된다.
명령은 사이드 이펙트를 일으키고 어떤 값도 반환하지 않는 메서드(void 반환)다.
조회는 그 반대로 사이드 이펙트가 없고 값을 반환한다.
* 사이드 이펙트의 예로는 객체 상태 변경, 파일 시스템 내 파일 변경 등이 있다.
메서드가 사이드 이펙트를 일으키면 해당 메서드의 반환 타입이 void인지 확인하라.
메서드가 값을 반환하면 사이드 이펙트가 없어야 한다.
질문 할 때 답이 달라져서는 안된다.
항상 CQS 원칙을 따를 수 있는건 아니다. 그래도 가능하면 CQS 원칙을 따르는 것이 좋다.
명령을 대체하는 테스트 대역은 목이다. 조회를 대체하는 테스트 대역은 스텁이다.
'스터디-공부 > 테스트' 카테고리의 다른 글
5장 목과 테스트 취약성 (4) (0) | 2023.07.05 |
---|---|
테스트용 크롬 (Chrome for Testing) (0) | 2023.07.02 |
5장 목과 테스트 취약성 (3) (0) | 2023.05.12 |
5장 목과 테스트 취약성 (1) (0) | 2023.05.11 |
좋은 테스트란 무엇인가 – 테스트를 평가하는 4가지 요소 (0) | 2023.05.02 |
댓글