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