所以在我测试的服务中,我有一个依赖的服务,它获取一个对象并对其进行一些扩充.我想模拟依赖服务正在做的部分,并使模拟返回它正在接收的内容.问题是我无法接触到它.

我试过这样的方法:

  val captureMyObject = slot<MyObject>()
  every { serviceX.doSomething(capture(captureMyObject)) } 
  returns captureMyObject.captured

但它失败了:kotlin.UninitializedPropertyAccessException: lateinit property captured has not been initialized

推荐答案

在oleksiyp发表 comments 之后,我重新阅读了这些文档.正确的方法是:

val captureMyObject = slot<MyObject>()
every { serviceX.doSomething(capture(captureMyObject)) } answers {captureMyObject.captured}

Kotlin相关问答推荐

如何编写带有依赖项的自定义Kotlin串行化程序?

为什么Kotlin协程程序即使有延迟也能输出?

有没有一种简单的方法来识别物体?

为什么可组合对象看似无状态(唯一传递的参数是函数,而不是状态),但会进行重组

如何将消费者放入 Kotlin 的 map 中?

Kotlin supervisorScope 即使包裹在 try catch 中也会失败

如何获取@JsonProperty 名称列表?

如何在 Spring Boot 3 中为内部类提供运行时提示

如何使用子变量在 Kotlin 中初始化父级

嵌套数组 indexOf()

如何为你的 Flutter 元素添加 Kotlin 支持?

interface扩展

Kotlin - 覆盖方法中的 IllegalArgumentException

如何通过反射使用 Kotlin 对象

Jetpack Compose – LazyColumn 不重组

如何在 Jetpack Compose 的 LazyColumn/LazyRow 中禁用和启用滚动?

如何在使用Koin DI的活动之间共享同一个ViewModel实例?

如何启用spring security kotlin DSL?

uses-sdk:minSdkVersion 16 不能小于库中声明的版本 23

如何在 kotlin 中创建重复对象数组?