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

时间:2020-06-19 02:22:02

标签: kotlin mockk junit-jupiter

有人问过类似的关于Mockito here

的问题。

我遇到一种情况,我想在下一行中模拟readValue

 val animal: Animal = objectMapper.readValue(String(message.body))

我尝试过

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

    every {
        objectMapper.readValue(any<String>())
    } returns animal
}

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

Not enough information to infer type variable T

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

1 个答案:

答案 0 :(得分:3)

我最终弄清楚了:

import org.junit.jupiter.api.Test

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

    every {
        objectMapper.readValue<Animal>(any<String>())
    } returns animal
}

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

every { 
   objectMapper.readValue(any<String>(), any<TypeReference<Animal>>()) 
} returns animal