我有这样的界面:
interface Database {
fun insertItems(items: List<ItemData>)
fun deleteItems(items: List<ItemData>)
fun runTransaction(alsoDelete: Boolean) {
insertItems(listOf(ItemData(id = 1), ItemData(id = 2), ItemData(id = 3)))
if (alsoDelete)
deleteItems(listOf(ItemData(id = 4), ItemData(id = 5), ItemData(id = 6)))
}
}
我想使用mockk创建Database
的实例,但我只想模拟抽象方法,同时保留runTransaction
,它确实有我想要测试的实现。结果是我可以这样验证:
runTransaction(alsoDelete = true)
verify { insertItems(listOf(ItemData(id = 1), ItemData(id = 2), ItemData(id = 3))) }
有可能用mockk来实现吗?
答案 0 :(得分:1)
类似的东西应该有效:
val x = mockk<Database>()
every { x.runTransaction(any()) } answers { callOriginal() }
x.runTransaction(alsoDelete = true)
verify { x.insertItems(listOf(ItemData(id = 1), ItemData(id = 2), ItemData(id = 3))) }
但事实并非如此。我添加了一张票here