java - Mockito 使用 ArgumentCaptor 抛出 InvalidUseOfMatchersException

标签 java mockito

我正在尝试使用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/

相关文章:

java - jar找不到资源

尝试使 Tableview 可点击时发生 JavaFX 错误

Java:无法解析为类型

java - Mockito 中连续两次方法调用何时发生?

Scala Play 框架 - 运行涉及 Akka 的测试时出现 "cannot enqueue after timer shutdown"错误

java - IInAppBillingService.aidl 无法在 Android Studio 中生成 Java 文件

java - 带有整数的集合,需要自行增减

java - Mockito 单元测试用例调用不明确(需要使其不明确)

java - Mockito 中模拟方法的单元测试最佳实践

java - 与 varargs() 匹配会出现编译错误