gpt4 book ai didi

Spring Integration Junit Bridge 到 testChannel 的直接 channel

转载 作者:行者123 更新时间:2023-12-04 18:31:31 27 4
gpt4 key购买 nike

我正在尝试为 Spring 集成流程编写 Junits,并且我有一个桥定义到我要检查其消息的 channel (直接 channel )。由于该 channel 不是发布订阅 channel ,因此网桥未收到消息。我不想为了 Junit 的目的将 channel 修改为发布订阅 channel 。除了将其设为发布订阅 channel 之外,还有其他方法吗?

<integration:channel id="processResponseChannel1" />
<integration:channel id="processResponseChannel2" />
<integration:channel id="processResponseChannel3" />
<integration:channel id="processResponseChannel4" />

<integration:service-activator
input-channel="processResponseChannel1"
output-channel="processResponseChannel2"
ref="processResponseActivator1"/>

<integration:service-activator
input-channel="processResponseChannel2"
output-channel="processResponseChannel3"
ref="processResponseActivator2"/>

<integration:service-activator
input-channel="processResponseChannel3"
output-channel="processResponseChannel4"
ref="processResponseActivator3"/>

我想在我的 junit 中检索 processResponseChannel2 中的消息并对该消息执行一些断言。

<integration:bridge input-channel="processResponseChannel2" 
output-channel="testChannel"/>

<integration:channel id="testChannel">
<integration:queue/>
</integration:channel>

在 Junit 中,我使用 testChannel.receive(5000) 来检索消息,但测试用例失败了。我不想将 processResponseChannel2 作为发布订阅来使测试类工作。有没有其他方法可以在 channel processResponseChannel2 中检索消息。

最佳答案

您可以将所需的 channel 作为 AbstractMessageChannel 注入(inject)到您的测试用例中,并使用 ChannelInterceptor 丰富该 channel 。在 preSend() 实现中,您可以断言传入消息。

这样您的配置将与测试和生产保持相同。

关于Spring Integration Junit Bridge 到 testChannel 的直接 channel ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41497868/

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