在测试Sping Boot Data存储库接口时,我使用Mockk
作为模拟框架。
实际上我正在做以下事情
every { itemRepository.saveAll(listOf(any(), any())) } returns listOf<Item>(mockk())
它应该模拟以下行为
val loot: List<Item> = itemGenerator.generateLoot(lootTable)
itemRepository.saveAll(loot)
我收到的错误消息如下:
Failed matching mocking signature for
SignedCall(retValue=, isRetValueMock=true, retType=class kotlin.collections.Iterable, self=ItemRepository(#28), method=saveAll(Iterable), args=[[com.barbarus.gameserver.item.Item@ea00de, com.barbarus.gameserver.item.Item@23ca36d]], invocationStr=ItemRepository(#28).saveAll([com.barbarus.gameserver.item.Item@ea00de, com.barbarus.gameserver.item.Item@23ca36d]))
left matchers: [any(), any()]
错误消息显示left matchers: [any(), any()]
,指出我没有正确定义期望的参数。
我可以通过测试逻辑中的真实的实现来完全定义这些项,但是我想坚持使用mockk()
,只是为了保持测试代码的精简和快速。
但是我不能在这里用listOf(any(),any())
定义两个元素的List<Item>
,我尝试了其他的Mockk API,没有任何运气。
你知道在这种情况下该用什么吗?
1条答案
按热度按时间jhdbpxl91#
在传入
saveAll()
时,应键入any()
。例如:
Solution from another post