使用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))