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

Mockito测试报错‘Misplaced or misused argument matcher detected’求助

问题原因及解决方案

你触发错误的核心原因是Mockito不允许在存根(when语句)或验证方法时混合使用参数匹配器和实际参数。你这里用了any(GeneratePaymentTicketRequest.class)这个匹配器,却给第二个参数传了实际字符串spokesmanDocumentNumber,这种混合写法违反了Mockito的规则,导致报错。

解决方法有两种,选一种即可:

方法一:用eq()匹配器替代实际参数

把实际字符串换成eq()匹配器,这样两个参数都使用Mockito的匹配器,符合规则:

when(paymentTicketService.generatePaymentTicket(any(GeneratePaymentTicketRequest.class), eq(spokesmanDocumentNumber))).thenReturn(paymentTicketPdfResponse);

eq(spokesmanDocumentNumber)的作用是匹配等于该字符串值的参数,效果和直接传实际值完全一样,但属于合法的参数匹配器。

方法二:用任意字符串匹配器(如果不需要精确匹配)

如果你的测试不需要精确匹配第二个参数,也可以用anyString()匹配任意字符串:

when(paymentTicketService.generatePaymentTicket(any(GeneratePaymentTicketRequest.class), anyString())).thenReturn(paymentTicketPdfResponse);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 02:04:50