首页 > 解决方案 > Mockk:无法为方法调用指定答案

问题描述

我的 Kotlin 类中有以下方法调用:

myService.trigger(id, processVariables, transientVariables)

... 其中“id”是一个字符串,“processVariables”是一个 Java Map<String, Object>,“transientVariables”是一个 Kotlin MutableMap<String, Any>。

在这种情况下,如何在单元测试中指定返回的答案?我尝试了以下方法:

every { myService?.trigger(MY_ID, any(), any()) } returns unit

...但是当单元测试运行时出现错误:

io.mockk.MockKException: no answer found for: MyService(#2).trigger(MY_ID, {}, {key=value})

提前感谢您的任何帮助。

标签: unit-testingkotlinmockk

解决方案


可以编译并导致成功测试运行的解决方法是使用值填充 Map:

val map = mapOf("Key" to "Value")
every { processInstance.processVariables } returns map

every { myService?.trigger(EXECUTION_ID, map, any()) } returns unit

推荐阅读