Kotlin Mockk:在调用Mockk服务的真实对象中执行回调代码

Kotlin Mockk:在调用Mockk服务的真实对象中执行回调代码,kotlin,mockk,Kotlin,Mockk,我试图实现类似的目标: 我将模拟服务传递给我的真实对象。如何调用myService.get回调?此代码从未被调用,并且我的测试在此请求时停止 以下是一些示例代码: class MyObject(private val myService: MyService){ fun getSomeStuff() { myService.get(object: MyService.Callback<MyServiceResponse>{ overri

我试图实现类似的目标:

我将模拟服务传递给我的真实对象。如何调用myService.get回调?此代码从未被调用,并且我的测试在此请求时停止

以下是一些示例代码:

class MyObject(private val myService: MyService){
    fun getSomeStuff() {
        myService.get(object: MyService.Callback<MyServiceResponse>{
            override fun onResponse(response: MyServiceResponse?) {
                // check response and do some stuff
                // I want to continue my tests here, but this gets never called
            }
        })
    }
类MyObject(private val myService:myService){
有趣的东西{
get(对象:myService.Callback{
覆盖FunonResponse(响应:MyServiceResponse?){
//检查响应并做一些事情
//我想在这里继续我的测试,但这个从未被调用
}
})
}
如何创建在回调中继续的测试

以下是我在测试中尝试的内容:

@Test
fun `get some stuff - success`() {
    val myService = mockk<MyService>() {
        every { get(any()) } answers {
            firstArg<() -> MyService.Callback<MyServiceResponse>>().invoke()
        }
    }

    val myObject = MyObject(myService)

    myObject.getSomeStuff()
}
@测试
乐趣`得到一些东西-成功'(){
val myService=mockk(){
每个{get(any())}答案{
firstArg MyService.Callback>().invoke()
}
}
val myObject=myObject(myService)
myObject.getSomeStuff()
}

您应该能够通过以下方式调用
onResponse()

every { get(any()) } 
answers {
  firstArg<MyService.Callback<MyServiceResponse>>().onResponse(aMyServiceResponse)
}
every{get(any())}
答复{
firstArg().onResponse(aMyServiceResponse)
}
顺便说一下,当您使用回调时,我想实现是异步的,因此您可能需要使用


HTH

很抱歉延迟,我将代码从
onResponse()
方法移动到另一个方法并检查此方法。我刚刚抽出时间测试您的解决方案,但在Android Studio中收到以下错误消息:类型不匹配:推断的类型为Unit,但预期为MockKMatcherScope.DynamicCall