簡體   English   中英

Kotlin Mockk:無法正確模擬列表

[英]Kotlin Mockk : Unable to mock a list correctly

我正在嘗試驗證列表中的.shuffled()是否已調用,但由於列表中先前的.take(6)調用而在運行時出現錯誤,我看不到解決此問題的方法。

這是一些出現相同錯誤的代碼:

val mockList =
    mockk<List<String>> { every { shuffled() } returns mockk(relaxed = true) }
val choiceList = spyk(listOf("String1", "String2")) { every { take(6) } returns mockList }

val tmp = choiceList.take(6)
val tmp2 = tmp.shuffled()

verify {mockList.shuffled())

在第 4 行,我收到以下錯誤:

class io.mockk.renamed.java.util.List$Subclass0 cannot be cast to class java.lang.Integer (io.mockk.renamed.java.util.List$Subclass0 is in unnamed module of loader 'app'; java.lang.Integer is in module java.base of loader 'bootstrap')

嘗試通過直接驗證choiceList.take(6).shuffled()並將兩個 tmp vals 合並為一個來達到 go,但沒有成功,因為無論是否調用.shuffled()如此。 此外,從 spy 切換到 choiceList 的 mock 也沒有用。

編輯:注意,因為這是一個玩具示例,所以take()是完全必要的,不能刪除,因為它在實際代碼中有實際用途。

    val mockList: List<String> = mockk(relaxed = true)
    mockList.shuffled()
    verify { mockList.shuffled() }

這對我有用。 問題是choiceListtake不能以某種方式被嘲笑。 真的有必要嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM