我正在尝试使用mockito的ArgumentCaptor
类来捕获一些参数,然后对其进行一些验证。但它抛出了一个异常。
这就是打印的错误消息。
org.mockito.exceptions.misusing.InvalidUseOfMatchersException: Invalid use of argument matchers! 0 matchers expected, 1 recorded:
下面是抛出异常的代码。
//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() 方法是静态的或最终的。因此,你不能 mock 它。您可以尝试改用 PowerMock(请参阅 Mockito - 0 Matchers Expected, 1 Recorded (InvalidUseOfMatchersException))。
关于java - Mockito 使用 ArgumentCaptor 抛出 InvalidUseOfMatchersException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43766864/