繁体   English   中英

你如何让 Mockito 与 Kotlin 不可空类型一起玩得很好?

[英]How do you get Mockito to play nice with Kotlin non-nullable types?

作为重现这个概念的一个非常基本的例子,我有这个类:

open class Something {
    fun doSomething(param: String): Boolean {
        println(param)
        return true
    }
}

当我尝试在这里嘲笑它时:

class ExampleUnitTest {
    @Test
    fun mockito_test() {
        val myMock =  Mockito.mock(Something::class.java)
        Mockito.`when`(myMock.doSomething(any())).thenReturn(true)
    }
}

执行此单元测试会出现此错误:

java.lang.IllegalStateException: any() must not be null

    at com.example.mockitokotlinexample.ExampleUnitTest.mockito_test(ExampleUnitTest.kt:18)

``

理论上我可以使我试图模拟的方法的参数可以为空,但这违背了 kotlin 的目的。 我在网上找到了替代解决方案,即这些解决方法: https : //stackoverflow.com/a/30308199/2127532

但是这些并没有使问题消失,似乎其他人已经评论说他们不适用于最新版本的 Kotlin。 他们一开始就觉得很讨厌。

我也尝试使用这个库: https : //github.com/nhaarman/mockito-kotlin

我再次收到 IllegalStateException 错误。

有人有想法吗?

我已经通过创建自己的 any() 解决了这个问题

private fun <T> any(type : Class<T>): T {
    Mockito.any(type)
    return null as T
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM