如何捕获传递给模拟函数的参数并 return 它?
How to capture an argument that was passed to a mocked function and return it?
因此,在我正在测试的服务中,我有一个依赖服务,它接受一个对象并对其进行一些扩充。我想模拟依赖服务正在执行的部分,并使模拟 return 完全符合它接收的内容。问题是我无权访问它。
我试过这样的事情:
val captureMyObject = slot<MyObject>()
every { serviceX.doSomething(capture(captureMyObject)) }
returns captureMyObject.captured
但它失败了:kotlin.UninitializedPropertyAccessException: lateinit property captured has not been initialized
在 oleksiyp 评论之后,我重新阅读了文档。正确的方法是:
val captureMyObject = slot<MyObject>()
every { serviceX.doSomething(capture(captureMyObject)) } answers {captureMyObject.captured}
因此,在我正在测试的服务中,我有一个依赖服务,它接受一个对象并对其进行一些扩充。我想模拟依赖服务正在执行的部分,并使模拟 return 完全符合它接收的内容。问题是我无权访问它。
我试过这样的事情:
val captureMyObject = slot<MyObject>()
every { serviceX.doSomething(capture(captureMyObject)) }
returns captureMyObject.captured
但它失败了:kotlin.UninitializedPropertyAccessException: lateinit property captured has not been initialized
在 oleksiyp 评论之后,我重新阅读了文档。正确的方法是:
val captureMyObject = slot<MyObject>()
every { serviceX.doSomething(capture(captureMyObject)) } answers {captureMyObject.captured}