android - 如何检查一个方法是否没有被 mockk 调用?

标签 android unit-testing kotlin mockk mockk-verify

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

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

关于android - 如何检查一个方法是否没有被 mockk 调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71680808/

相关文章:

java - 发现多个文件具有独立于操作系统的路径 'lib/arm64-v8a/librealm-jni.so'

android - 将音频文件从 raw 文件夹下载到 SD 卡

c# - 我如何获得 Resharper 中止测试的原因?

python - Python 中的简单单元测试,用于检查输入和预期输出

android - Kotlin android中的 Activity 到底是什么?

android - 主要 Activity 中 Unresolved 功能引用

intellij-idea - 无法运行 kotline 临时文件

java - 如何将 "2014-08-10T06:34:04-0500"转换为 SimpleDateFormat

javascript - 无法获取 navigator.notification.alert ("test")在 Phonegap android 应用程序上工作

javascript - 开 Jest mock 服务变量.asObservable 返回