-
[TDD] Mock 객체 생성 및 구현개발공부/JAVA 2022. 9. 26. 11:16
Mock 객체 생성
- 구현체는 있지만 구현되어있지 않은 interface를 실제 서비스 코드에서 실행하고 싶을 때 임의로 내가 만들어 주는게 아니라 mockito를 통해 가짜 객체를 만들어서 실행
스터빙(stubbing)
모든 Mock 객체의 행동
- null을 리턴한다 (Optional 타입은 Optional.empty 리턴)
- primitive 타입은 기본 primitive 값
- 콜렉션은 비어있는 콜렉션
- Void 메소드는 예외를 던지지 않고 아무런 일도 발생하지 않는다
Mock 객체를 조작
- 특정한 매개변수를 받은 경우 특정한 값을 리턴하거나 예뢰를 던지도록 만들 수 있다.
- Void 메소드 특정 매개변수를 받거나 호출된 경우 예외를 발생 시킬 수 있다.
- 메소드가 동일한 매개변수로 여러번 호출될 때 각기 다르게 행동호도록 조작할 수도 있다.
thenReturn(성공)
- when(mock.isOk()).thenReturn(true)
thenThrow(실패)
- when(mock.isOk()).thenThrow(exception)
doThrow(실패)
- doThrow(exception).when(mock).someVoidMethod()
Verifying (검증 확인)
Mock 객체가 어떻게 사용이 됐는지 확인
- 특정 메소드가 특정 매개변수로 몇번 호출 되었는지, 최소 한번은 호출 됐는지, 전혀 호출되지 않았는지
- 어떤 순서대로 호출했는지
- 특정 시간 이내에 호출됐는지
- 특정 시점 이후에 아무 일도 벌어지지 않았는지
+)
인프런 백기선님 강의를 들으며서 정리한 내용이다
정리한 시점에서는 머리로는 이해가 되었었다
하지만 강의를 들으면서 동시에 이걸 어떻게 프로젝트에 녹일 수 있을까 계속 고민하면서 듣느라 여러번 듣게 됐다
역시 기술 공부는 개념을 익히는 것과는 별개로 직접 구현해보는 것 까지가 공부의 끝이라고 할 수 있겠다
'개발공부 > JAVA' 카테고리의 다른 글
input/outputstream 활용한 PDF 다운로드 (0) 2023.02.24 log4j / logback / log4j2 정리 (0) 2022.11.09 [TDD] 예제 테스트 작성 (0) 2022.10.04 [TDD] BDD 스타일의 mockito API (0) 2022.09.28 [TDD] mokito를 이용한 유닛 테스트 (0) 2022.09.25