I followed step by step instructions from many blogs for implementing a mock with MockK:
class SWServiceImplTest {
@MockK
lateinit var externalApi: ExternalApiService
@InjectMockKs
lateinit var SWService: SWServiceImpl
@Before
fun setUp() = MockKAnnotations.init(this)
@Test
fun SWCharacterReturnsCorrectValues() {
every { externalApi.get<Characters>(Utils.SW_API) } returns mockCharacters()
val result = SWService.swCharacter!!
assertEquals("blue", result.first().color?.toLowerCase())
assertEquals(result.size, 3)
}
}
I want to inject externalApi
into my SWService
service and mock the get
method of the injected object (externalApi
) but it seems that the mock is ignored.
logs :
15:09:54.497 [main] DEBUG io.mockk.impl.instantiation.AbstractMockFactory - Creating mockk for <error "java.lang.NoClassDefFoundError: kotlin/coroutines/intrinsics/IntrinsicsKt"> name=externalApi#1
15:09:56.820 [main] DEBUG org.springframework.web.client.RestTemplate - HTTP GET https://xxx.xxx/
15:09:57.038 [main] DEBUG org.springframework.web.client.RestTemplate - Accept=[application/json, application/*+json]
org.springframework.web.client.RestClientException: No HttpMessageConverter for java.lang.Object and content type ""
In my SWService
file, externalApi
is initialized in a companion object :
companion object{
val api = ExternalApiService()
}
Something wrong in my implementation ? Thanks