簡體   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