如何测试 Spring Cloud Stream Listener

How to test Spring Cloud Stream Listener

我有一个控制器调用服务,方法如下:

Something send(SomeMessage message) {
    binding.sendSomeMessage().send(MessageBuilder.withPayload(message).build());
}

@StreamListener(target = "SomeInput")
void listen(SomeResponse response) {
    // do something...
}

现在,我需要测试一下。我只使用 mockMvc 对我的控制器进行了测试。它调用一个端点,而不是这个服务并将我的消息发送到定义的队列。我需要能够调用一些东西来模拟响应以触发该侦听器。

这可能吗?

看来您是 spring-cloud-stream 的新手,使用的是即将弃用的旧方法来配置消息侦听器。我们早就切换到基于函数的模型,您可以找到有关如何测试的详细信息和示例 here。 正如您将看到的,相同的测试方法也适用于遗留 StreamListeners,这里 one of our tests 将向您展示如何做到这一点。 但是,我建议切换到功能模型。它更简单,更少的代码和更少的配置。