MockK의 흑마술을 파헤치자!

Photo by Green Chameleon on Unsplash

이하 every 에 설정하는 동작을 MockK의 네이밍 규칙에 따라 앤써(answer)라고 부르겠습니다. 앤써는 값을 반환하거나 익셉션을 던지도록 지시합니다. 표현이 이상할 수도 있지만 앤써를 실행하는 표현을 보면 그런 지시를 내리는 거라 생각해주세요.

이하 목케이는 “MockK” 라이브러리고, mockk 표기는 라이브러리 메써드를 지칭합니다.

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

every로 앤써를 설정하다

목 인스턴스를 감시하는 CallRecorder

CallRecorder의 인스턴스는 ThreadLocal 변수로 제공됩니다.

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

정확히는 그 외에 Object#toString 등 특정 메소드를 부를 때 앤써를 실행하지 않고 수정전 메소드를 부르도록 하는 SafeLogging 상태도 있습니다만, MockK의 내부에서만 이용되기 때문에 신경쓸 필요는 없습니다.

TDD 용어로 말하는 “stub”의 역할이 아닌 기능도 포함하고 있기 때문에, 작명이 좋지 않은 것 같기도 합니다.

verify 메서드 호출

기타 이야기

마지막으로

--

--

developer @ htbeyond, SNU math graduate

Love podcasts or audiobooks? Learn on the go with our new app.

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