Mockito使用ArgumentCaptor

时间:2017-05-03 17:50:10

标签: java mockito

我正在尝试使用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方法,它将参数作为我试图捕获的参数的基类。

1 个答案:

答案 0 :(得分:2)

save()方法是静态的或最终的。因此,你不能嘲笑它。您可以尝试使用PowerMock(请参阅Mockito - 0 Matchers Expected, 1 Recorded (InvalidUseOfMatchersException))。