使用mockito.verify忽略其中一个参数

agxfikkp  于 2022-11-08  发布在  其他
关注(0)|答案(3)|浏览(177)

我想跳过验证调用中的一个参数检查。因此:

def allowMockitoVerify=Mockito.verify(msg,atLeastOnce()).handle(1st param,,3rd param)

我想跳过第二个参数的检查。我该怎么做呢?

vh0rcniy

vh0rcniy1#

不幸的是,Mockito不允许您混合和匹配原始值和匹配器(例如String和Matchers.any())
但是,您可以使用eq()Matcher来匹配特定值,例如

Mockito.verify(msg, atLeastOnce())
  .handle(eq("someValue"), any(Thing.class), eq("anotherValue"));

感谢这篇文章为这个Mockito: InvalidUseOfMatchersException提供了一个很好的例子

gijlo24d

gijlo24d2#

您可以尝试Mockito.any(),这基本上意味着我们对该参数不感兴趣。

xwbd5t1u

xwbd5t1u3#

我使用的是Mockito 3.9.0,因为你不能将匹配器和期望值混合,也就是说,你不能验证第一个参数是一个特定的字符串,比如test-profile,而第二个参数是任何值,所以你需要将所有的都转换成匹配器,所以你不能做类似这样的事情:

verify(userAuthorizationService).authorizeRequest("test-profile", any());

相反,您需要将值转换为匹配器,例如:

verify(userAuthorizationService).authorizeRequest(matches("test-profile"), any());

请注意,matchesany是从org.mockito.ArgumentMatchers静态导入的

相关问题