如何在不使用Transformer的情况下在TestSupportBinder中获取通道

问题描述 投票:3回答:2

我正在尝试使用TestSupportBinder为spring cloud stream应用程序编写测试。我发现的所有例子,包括official documentsofficial github,都是用Processor来测试Transformer。这些测试使用Tranformer获取输出通道,并将Channel对象输入messageCollector.forChannel方法以轮询输出。

但是,我没有使用提供的Processer,而是编写了自己的界面。我找不到在测试代码中获取所需Channel对象的方法。我试图将我的接口自动装入测试类以获取Channel对象,但以java.lang.IllegalArgumentException: Channel [MY_CHANNEL] was not bound by class org.springframework.cloud.stream.test.binder.TestSupportBinder结束。

spring-cloud-stream
2个回答
0
投票

错误消息表示通道MY_CHANNEL未注册到MessageCollector中。并且,这表明,您的应用程序中未使用MY_CHANNEL声明接口中的通道EnableBinding。你的应用程序中是否有@EnableBinding(MyOwnInterface.class)(MyOwnInterface声明MY_CHANNEL通道)?


0
投票

在看了一下spring docs here后,我注意到它似乎故意只跟踪输出通道,而不是输入通道。

例如,请参阅:

对于出站消息通道,TestSupportBinder注册单个订户并保留应用程序在MessageCollector中发出的消息。它们可以在测试期间检索并对它们进行断言。

此外,在示例中,它们只是在输出通道上演示:

messageCollector.forChannel(processor.output()).poll()

在我看来,他们希望您通过调用listen方法来跟踪输入通道。

© www.soinside.com 2019 - 2024. All rights reserved.