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

时间:2017-04-17 08:52:00

标签: spring-cloud-stream

我正在尝试使用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结束。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

在查看了春天的文档here之后,我注意到似乎是有意地他们只跟踪输出通道,而不跟踪输入通道。

例如,请参阅:

  

对于出站邮件渠道,TestSupportBinder注册了一个   单一订户并保留应用程序发出的消息   在MessageCollector中。它们可以在测试过程中检索并具有   对他们的断言。

此外,在示例中,它们仅在输出通道上进行演示:

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

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