我正在尝试使用TestSupportBinder为spring cloud stream应用程序编写测试。我找到的所有示例(包括official documents和official 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
结束。
答案 0 :(得分:0)
错误消息表示通道MY_CHANNEL
未注册到MessageCollector中。并且,这表明,您的应用程序中未使用MY_CHANNEL
声明接口中的频道EnableBinding
。您的应用程序中是否有@EnableBinding(MyOwnInterface.class)
(MyOwnInterface声明MY_CHANNEL
频道)?
答案 1 :(得分:0)
在查看了春天的文档here之后,我注意到似乎是有意地他们只跟踪输出通道,而不跟踪输入通道。
例如,请参阅:
对于出站邮件渠道,TestSupportBinder注册了一个 单一订户并保留应用程序发出的消息 在MessageCollector中。它们可以在测试过程中检索并具有 对他们的断言。
此外,在示例中,它们仅在输出通道上进行演示:
messageCollector.forChannel(processor.output()).poll()
在我看来,他们希望您通过调用侦听方法来跟踪输入通道。