jhu*_*vis 5 mocking mockito kotlin
我正在尝试使用Mockito在Kotlin中模拟通用接口。但是到目前为止,我还没有找到自然的解决方案。鉴于:
interface X<T> {
fun x(): T
}
fun f(x: X<Int>) = x.x()
Run Code Online (Sandbox Code Playgroud)
我可以嘲笑X以下任何一项:
val x = f(Mockito.mock(X::class.java) as X<Int>)
但这会产生“未经检查的演员表”警告。
@Mock lateinit var x: X<Int>
但是我不想使用@Mock注释,因为我想将字段最终确定。
引入一个辅助函数,就像模仿库库林库所做的那样:
inline fun <reified T : Any> mock(): T = Mockito.mock(T::class.java)!!
然后这样称呼它:
val x: X<Int> = mock()
但是我不想使用辅助函数。
是否有一种优雅的纯Kotlin方法来模拟Mockito的通用接口?(我希望版本1.不带警告。)
只需使用mockito-kotlin项目。这个项目包含所有必须有的 mockito 助手。并支持 mockito 2.1。
更新。要处理“uncheked cast”,请使用Reified 类型参数。
你说“但我不想使用辅助函数。”,但为什么呢?这是内联函数,因此在编译时函数将在所有调用点内联。
| 归档时间: |
|
| 查看次数: |
3373 次 |
| 最近记录: |