MockK의 흑마술을 파헤치자!

이 글은 원글의 한글 버젼입니다. 영문 버젼도 있습니다. 원저작자 오보에니쿠이님의 동의를 구해 작성한 글입니다.

mockk로 목인스턴스를 생성한다.

목 대상의 일반 클래스 여부가 생성 인스턴스의 클래스가 영향을 받습니다.

every로 앤써를 설정하다

이전 장에서는 mockk 메소드를 통해서 목 인스턴스를 생성할 뿐만 아니라 클래스의 수정이 이루어진다는 것까지 설명했습니다. 그럼 every 메소드에서는 클래스 수정이 어떻게 활용이 되는 것일까요?

목 인스턴스를 감시하는 CallRecorder

`CallRecorder` 상태 전환 다이어그램
`CallRecorder` 상태 전환 다이어그램
CallRecorder 상태 전환 다이어그램

verify 메서드 호출

이제 이쯤 되면 verify가 뭘 할 지 설명이 필요 없을지도 모르지만 일단. verify가 호출되면 CallRecorder 의 상태를 Verifying으로 합니다. 이 상태에서 블록을 실행하여 다른 것과 마찬가지로 호출 정보를 취득하고, MockKStub에 기록된 호출 기록을 대조하여 정말 불리고 있는지 확인합니다.

기타 이야기

제네릭의 형 정보는 Java 실행시에는 참조할 수 없습니다. 따라서 다음 3가지 테스트는 조금 재미있는 동작을 합니다.

마지막으로

긴 글을 끝까지 읽어주셔서 감사합니다.

developer @ htbeyond, SNU math graduate

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store