问题描述
我的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会检查扩展目录中的配置文件。该文件可模拟最终方法和类。