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

使用MockK测试遇Type mismatch:Runs与Awaits类型不匹配

解决MockK中just Runs类型不匹配问题

问题原因

你遇到的差异源于两个被Mock函数的类型不同:

  • noticeRepository.delete(any())是非挂起的Unit函数,MockK的every { ... } just Runs刚好适配这个场景的扩展函数;
  • accountService.findAccount(...)是挂起函数(带suspend修饰),此时用普通的every会触发类型不匹配——MockK针对挂起函数的Mock需要专门的coEvery,对应的just扩展也是适配挂起场景的。

解决方案

将针对挂起函数的Mock语句中的every替换为coEvery即可:

coEvery { accountService.findAccount(nonExistAccountId.toString()) } just Runs

补充说明

MockK的just函数有两个核心版本:

  • 配合every使用,用于非挂起函数的Mock,接受Runs类型;
  • 配合coEvery使用,用于挂起函数的Mock,处理挂起上下文的返回逻辑。
    你之前用everyMock挂起函数时,编译器找不到对应的just扩展,因此抛出“Runs和Awaits类型不匹配”的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 00:19:52