MockK는 코틀린을 위한 Mock 프레임워크
자바의 Mockito와 유사해서 쉽게 적응이 가능하다.
// 1. mockk<타입>()
private val mockValidator1 = mockk<CreationValidator>()
// 2. 타입 추론
private val mockValidator2 : CreationValidator = mockk()
mockk 함수는 타입 파라미터를 이용해서 생성할 모의 객체의 타입을 전달 받는다
위 예시처럼 타입을 선언할 때 명시해주면 타입 추론이 가능하다.
@Test
fun someMockTest() {
every { mock.someMethod(1) } returns "OK" // "OK" 리턴
every { mock.someMethod(2) } throws SomeException() // 익셉션 발생
every { mock.call() } just Runs // Unit 함수 실행
assertEquals("OK", mock.someMethod(1))
assertThrows<SomeException> { mock.someMethod(2) }
}
모의 객체를 생성해준뒤 **every 함수를 이용해서 모의 객체의 동작 방식을 정의
**한다.
MockK는 호출 대상에 대한 스텁 정의를 하지 않으면 오류가 발생한다.
해결 방법은 mockk 함수의 인자에 relaxed = true를 넘겨서 relaxed mock을 만들면 된다.