使用Mockito,我如何用val接口字段声明监听Kotlin类?

我试图在Android中使用Mockito来测试Kotlin的改造api客户端类,如下所示:

class SomeApiClient : SomeApi { private val service: SomeApiService constructor(service: SomeApiService) { this.service = service } } 

它实现了SomeApi接口并包含一个改进的服务接口作为构造参数。

当用Mockito监听类时,这些类需要没有参数的构造函数,否则你的测试将会失败,并带有MockitoException

org.mockito.exceptions.base.MockitoException:无法初始化@Spy带注释的字段'SomeClass'。 请确保“SomeClass”类型具有无参数构造函数。

如果类具有包含默认值的所有参数的构造函数,那么Kotlin为其生成无参数的构造函数。 但是,如果类接收到构造函数参数的interface (并且具有与val声明相对应的字段),那么我们如何应用默认值或声明空的构造函数呢?

谢谢!

当用Mockito间谍类时,这些类需要没有参数的构造函数

不,只有在你自己不提供实例的情况下。 所以提供实例,例如

 @Spy val client = SomeApiClient(Mockito.mock(SomeApiService::class.java))