我试图使用Mockito的ArgumentCaptor
类捕获一些参数,然后对其进行一些验证。但这引发了异常。
这是作为错误消息打印的内容。
org.mockito.exceptions.misusing.InvalidUseOfMatchersException:
无效使用参数匹配器!
预计有0个符合条件的记录,有1个记录:
下面是引发异常的代码。
//Arrange
int amount = 100;
DonationTransaction transaction = getPendingTransaction(player, amount);
when(mockDonationTransactionDAO.getPendingTransactions(player)).thenReturn(Arrays.asList(transaction));
ArgumentCaptor<DonationAttribution> argumentCaptor = ArgumentCaptor.forClass(DonationAttribution.class);
//Act
donationService.applyPendingDonations(player, playerDTO);
//Assert
verify(mockDonationAttributionDAO).save(argumentCaptor.capture()); //Exception here
...
我正在使用Junit5和Mockito版本2.7.22。
不知道我是否在这里缺少明显的东西。
我的DonationAttributionDao可以扩展抽象DAO(如果有帮助的话),并且save方法在抽象类中定义,该抽象类将我尝试捕获的Argument的基类作为参数。
最佳答案
save()方法是静态的或最终的。因此,您不能嘲笑它。您可以尝试改用PowerMock(请参见Mockito - 0 Matchers Expected, 1 Recorded (InvalidUseOfMatchersException))。