如何使用 mockk 模拟 ObjectMapper.readValue()

Nar*_*pai 3 kotlin junit-jupiter mockk

有一个类似的问题问的Mockito这里

我有一种情况,我想readValue在以下行中模拟

 val animal: Animal = objectMapper.readValue(String(message.body))
Run Code Online (Sandbox Code Playgroud)

我试过

@Test
fun `test you filthy animal`() {
    val animal = Animal("bird")

    every {
        objectMapper.readValue(any<String>())
    } returns animal
}
Run Code Online (Sandbox Code Playgroud)

...但我不断收到以下错误:

Not enough information to infer type variable T

我一直在挠头,试图在Mockk弄清楚

Nar*_*pai 5

我最终弄清楚了:

import org.junit.jupiter.api.Test

@Test
fun `test you filthy animal`() {
    val animal = Animal("bird")

    every {
        objectMapper.readValue<Animal>(any<String>())
    } returns animal
}
Run Code Online (Sandbox Code Playgroud)

编辑:后来我遇到了更多问题,这些问题已通过以下方式解决:

every { 
   objectMapper.readValue(any<String>(), any<TypeReference<Animal>>()) 
} returns animal
Run Code Online (Sandbox Code Playgroud)