You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MockK中如何获取Mock对象上方法的实际调用次数?

MockK 查询Mock对象方法调用次数/调用记录的实现

MockK 原生支持直接获取Mock对象的调用记录、统计方法调用次数,并非只能通过verify()做存在性/次数校验,对应MockitomockingDetails(mock).getInvocations()的能力实现方式如下:

  • 获取Mock对象全量调用记录
    所有通过mockk()、spyk()创建的Mock/间谍对象,以及通过mockkObject()代理的对象,都内置_allRecordedCalls属性,直接访问即可拿到该对象所有方法调用的完整记录,每条记录包含方法签名、入参、调用时序等元数据。
    基础用法示例:

    // 示例Mock对象
    val userServiceMock = mockk<UserService>(relaxed = true)
    // 触发若干次调用
    userServiceMock.getUserById(1)
    userServiceMock.getUserById(2)
    userServiceMock.updateUser(3)
    
    // 拿到该Mock的所有调用记录
    val allInvocations = userServiceMock._allRecordedCalls
    
  • 统计指定方法的调用次数
    拿到全量调用记录后,直接通过条件筛选即可统计对应方法的调用次数,支持按方法名、入参等维度过滤:

    // 统计getUserById方法的总调用次数
    val getUserTotalCount = allInvocations.count { it.method.name == "getUserById" }
    
    // 统计getUserById方法入参为1的调用次数
    val getUserWithId1Count = allInvocations.count {
        it.method.name == "getUserById" && it.args.first() == 1
    }
    
  • 辅助操作
    如果需要清空历史调用记录重新统计,调用clearMocks(你的Mock对象, answers = false, recordedCalls = true)即可,不会清除已经配置的Mock回答规则。

内容的提问来源于stack exchange,提问作者k314159

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 01:09:58