[英]How can I mock a call to Spring's repository `saveAll()` method using mockk?
在測試我的 Spring 引導數據存儲庫接口時,我使用Mockk
作為我的 mocking 框架。
其實我在做以下事情
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()]
指出我不知何故沒有定義預期的 arguments 權利。
我可以在我的測試邏輯中通過真實的實現來完全定義項目,但我想堅持使用mockk()
只是為了保持測試代碼的簡潔和快速。
但是,我有點無法在此處使用listOf(any(),any())
定義具有兩個元素的List<Item>
。 我嘗試了 Mockk 的其他 API,但沒有任何運氣。
知道在這種情況下使用什么嗎?
當您傳遞到saveAll()
) 時,您應該鍵入any()
) 。
例如:
import com.barbarus.gameserver.item.Item
...
every { itemRepository.saveAll(any<List<Item>>() } returns listOf<Item>(mockk())
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.