[英]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() }
這對我有用。 問題是choiceList
的take
不能以某種方式被嘲笑。 真的有必要嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.