如何检查是否未使用 mockk 调用方法?

How to check if a method was not invoked with mockk?

我需要检查我的单元测试中是否未调用某个方法。这是我做的一个示例测试,它检查该方法是否被调用并且它工作得很好:

@Test
fun viewModel_selectDifferentFilter_dispatchRefreshAction() {
    val selectedFilter = FilterFactory.make()
    val event = GroceriesAisleFiltersUiEvent.SelectFilter(
        filter = selectedFilter,
        refreshListAction = mockk()
    )
    every { event.refreshListAction(selectedFilter) } just runs
    viewModel.dispatchViewAction(event)
    verify { event.refreshListAction(selectedFilter) }
}

为此,我正在使用 mockk 的 verify 函数来检查是否正在调用该方法。

有没有办法使用 mockk 检查此方法是否未被调用?简而言之,我需要用这个检查代替评论来完成下面的代码:

@Test
fun viewModel_selectSameFilter_notDispatchRefreshAction() {
    val selectedFilter = viewModel.viewState.value.selectedFilter
    val event = GroceriesAisleFiltersUiEvent.SelectFilter(
        filter = selectedFilter,
        refreshListAction = mockk()
    )
    every { event.refreshListAction(selectedFilter) } just runs
    viewModel.dispatchViewAction(event)
    // TODO: verify if method's not invoked
}

如果你想验证你的方法没有被调用,你可以验证它被调用了 0 次:

verify(exactly = 0) { event.refreshListAction(any()) } 

或者,在您的 event.refreshListAction 是模拟的情况下,您可以等效地编写以下内容来验证根本没有调用模拟:

verify { event.refreshListAction wasNot called }