gpt4 book ai didi

spring-kafka - 如何模拟 KafkaTemplate 的结果

转载 作者:行者123 更新时间:2023-12-04 11:38:37 24 4
gpt4 key购买 nike

我有一种发送 kafka 消息的方法,如下所示:

@Async
public void sendMessage(String topicName, Message message) {
ListenableFuture<SendResult<String, Message >> future = kafkaTemplate.send(topicName, message);

future.addCallback(new ListenableFutureCallback<>() {

@Override
public void onSuccess(SendResult<String, Message > result) {
//do nothing
}

@Override
public void onFailure(Throwable ex) {
log.error("something wrong happened"!);
}
});
}

现在我正在为它编写单元测试。我还想测试两个回调方法 onSuccessonFailure方法,所以我的想法是模拟 KafkaTemplate,例如:
KafkaTemplate kafkaTemplate = Mockito.mock(KafkaTemplate.class);

但是现在我陷入了这两种情况的模拟结果上:
when(kafkaTemplate.send(anyString(), any(Message.class))).thenReturn(????);

我应该在 thenReturn 中放什么案例成功和案例失败的方法?请问有人有什么想法吗?非常感谢!

最佳答案

您可以模拟模板,但最好模拟界面。

    Sender sender = new Sender();
KafkaOperations template = mock(KafkaOperations.class);
SettableListenableFuture<SendResult<String, String>> future = new SettableListenableFuture<>();
when(template.send(anyString(), any(Message.class))).thenReturn(future);
sender.setTemplate(template);
sender.send(...);

future.set(new SendResult<>(...));

...or...

future.setException(...

关于spring-kafka - 如何模拟 KafkaTemplate 的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57475464/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com