【发布时间】:2020-08-22 16:30:41
【问题描述】:
有类似的问题,但没有专门处理 kotlin、mock 和使用 objectMapper.readValue 读取对象列表。
给定一个方法:
fun someMethod(message: Message): List<Animal> = objectMapper.readValue(
String(message.body),
object : TypeReference<List<Animal>>() {}
)
我试图在这里模拟它:
@Test
fun `test you filthy animals`() {
...
val animals: List<Animal> = emptyList()
every { objectMapper.readValue<List<Animal>>(
any<String>(),
any<Class<List<Animal>>>()
) } returns animals
...
}
但这没有用。我收到以下错误:
io.mockk.MockKException: no answer found for: ObjectMapper(#72).readValue(
somebody,
be.kind.to.Nature$someMethod$animals$1@46b2a11a
)
暂停。
【问题讨论】:
-
一方面,很好地解决了这个问题!但值得深思的是:也许嘲笑您解析 Json 的方式可能不是您的用例的最佳实践。创建假 jsons 而不是模拟对象映射器本身,这可能会改善您的测试代码库
-
我将您的建议铭记于心,并会考虑您的意见。当然,我已经创建了一个玩具示例,但是在这个 particular 测试的实际代码库中,更容易指出我不太关心 json 的确切内容。但这并不意味着您在总体策略方面仍然可能是正确的。
标签: kotlin mocking objectmapper mockk