Mockito InvalidUseOfMatchersException 尽管只使用了匹配器(并且提示似乎提到了错误的参数数量)

Mockito InvalidUseOfMatchersException despite using only matchers (and hint seems to mention wrong number of parameters)

我 运行 进入了众所周知的 InvalidUseOfMatchersException,尽管我 使用所有匹配器。

org.mockito.exceptions.misusing.InvalidUseOfMatchersException: 
Invalid use of argument matchers!
3 matchers expected, 2 recorded:
-> at com.spotify.adaccountservice.utils.RoleUtilsTest.test_addOrRemoveRole_AddUserToAdAccount(RoleUtilsTest.java:179)
-> at com.spotify.adaccountservice.utils.RoleUtilsTest.test_addOrRemoveRole_AddUserToAdAccount(RoleUtilsTest.java:180)

我知道我们不喜欢这里的代码截图,但我想证明它确实发生在这些行号处:

这是实际的方法:

所以它有点像 st运行ge。当方法有 4 个参数时,为什么需要 3 个匹配器?为什么它只“记录”了其中的 2 个,而我对所有这些都使用了 eq()

自我回答,因为错误误导了我。 (或者,也许有人可以解释为什么它实际上是准确的。)

结果是因为我的第三个参数 portcullisUtils 中的变量之一是我忘记为 getAdAccountRoleId(...) 存根的模拟对象。

我想这个程序不能真正告诉我当然我不是故意要匹配这样的抽象,而是做了一些奇怪的事情。

将接受任何能够解释这些特定错误消息原因的人的回答。