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

使用MockK时verify报错:KafkaService实例并非Mock对象

问题:MockK生成的对象被提示非Mock实例

问题详情

运行测试代码时出现错误,相关代码及错误信息如下:

测试代码

@ExtendWith(MockKExtension::class)
class SenderServiceTest {

   @MockK
   lateinit var kafkaService: KafkaService<KeyType, MessageType>


   @Test
   fun `Send message`() {
      val key = KeyType()
      val value = MessageType()
      verify(kafkaService).send(key, value)
   }
}

@Service
@ConditionalOnProperty(name = ["kafka.enabled"])
class KafkaService<K, V>(val producerFactory: ProducerFactory<K, V>, val names: KafkaNames) {

   fun send(key: K, value: V) {
     // some code to send the message.
   }

}

错误信息

org.mockito.exceptions.misusing.NotAMockException: 
Argument passed to verify() is of type KafkaService and is not a mock!
Make sure you place the parenthesis correctly!

不清楚为何提示该Mock Bean并非Mock对象,希望找出原因。


原因与解决方案

核心原因

你混用了MockK和Mockito的API:

  • 使用MockK的@MockK注解和MockKExtension创建Mock对象,但调用的是Mockito的verify()方法。
  • MockK生成的Mock实例只能被MockK自身的API识别,Mockito无法将其判定为自己创建的Mock,因此抛出错误。

修复步骤

  1. 确保导入MockK的verify方法:
import io.mockk.verify
  1. 将验证代码修改为MockK的语法:
verify { kafkaService.send(key, value) }

修改后即可正常验证MockK生成对象的方法调用。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 13:47:47