0

我有一个这样的界面:

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 实现这一目标?

4

1 回答 1

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))) }

但事实并非如此。我在这里加了一张票

于 2018-04-23T20:21:40.833 回答