如何解决用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会检查扩展目录中的配置文件。该文件可模拟最终方法和类。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。