用Mockito模拟Java Azure EventHubProducerClient的最佳方法是什么?

问题描述

我的Java Azure Event Hub客户端实现使用

<groupId>com.azure</groupId>
<artifactId>azure-messaging-eventhubs</artifactId>
<version>5.0.3</version>

private static EventHubProducerClient producer;
 ...
EventDataBatch batch = producer.createBatch();
batch.tryAdd(new EventData(message.toString()));
producer.send(batch);

嘲笑制作人的作品

@Mock
EventHubProducerClient producer;

但是

@Mock
EventDataBatch dataBatch;
...
doReturn(dataBatch).when(producer).createBatch();

抛出

org.mockito.exceptions.base.MockitoException:无法模拟/间谍类 com.azure.messaging.eventhubs.EventDataBatch

没有简单的方法来实例化EventDataBatch。构造函数需要有效的连接。

解决方法

您不能嘲笑com.azure.messaging.eventhubs.EventDataBatch,因为它是最后一堂课。默认情况下,Mockito不允许模拟最终课程。

可以通过使用扩展名来更改此行为。参见Mock Final Classes and Methods with Mockito

在将Mockito用于模拟最终类和方法之前,需要对其进行配置。

我们需要向项目的src / test / resources / mockito-extensions目录中添加一个名为org.mockito.plugins.MockMaker的文本文件,并添加一行文本:

mock-maker-inline

在加载扩展名时,Mockito会检查扩展目录中的配置文件。该文件可模拟最终方法和类。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...