我试图使用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))。

08-28 17:54