我试图验证是否调用了列表上的.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值合并为一个值的方法没有成功,因为无论.shuffled()
是否被调用,它都将为真。此外,从间谍切换到choiceList的模拟也不起作用。
编辑:注意,由于这是一个玩具示例,因此take()
是完全必要的,不能删除,因为它在实际代码中有真实的用途。
1条答案
按热度按时间qjp7pelc1#
这对我很有效。问题是
choiceList
的take
不能被嘲笑。真的有必要吗?