gpt4 book ai didi

java - 如何在 IntegrationFlow 组件上编写单元测试?

转载 作者:行者123 更新时间:2023-11-30 02:04:38 26 4
gpt4 key购买 nike

我有几个@Configuration类,其中包括由@Bean注释的高度复杂的IntegrationFlow。我想对这些流程中使用的每个组件进行单元测试。例如:

@Configuration
public class FirstClass{

@Bean
public MessageChannel requestChannel() {
return MessageChannels.direct().get();
}

@Bean
public MessageChannel responseChannel() {
return MessageChannels.direct().get();
}

@Bean
public IntegrationFlow myFlow(MessageChannel requestChannel, MessageChannel responseChannel) {
return from(requestChannel)...transform(this::myFirstCustomTransformer)....transform(this::mySecondCustomTransformer)...get();
}

//sorry for the continues dots, they indicate the existence of other components as well

private Map<String, Object> myFirstCustomTransformer(Map<String, Object> payload){
//do some stuff
}

private String mySecondCustomTransformer(Map<String, Object> payload) {
//do some stuff
}}

所以我想在单元测试中测试 mySecondCustomTransformermyFirstCustomTransformer。我怎样才能做到这一点?哪个是最好的解决方案?

*更新

这些转换器包括对同属于同一类的成员的方法的调用。因此,还必须为其余方法开发单元测试。

最佳答案

.transform(this::myFirstCustomTransformer) 创建了一个消费者端点组件,该组件能够通过其 inputChannel 接收消息。然后,它在 myFirstCustomTransformer 方法中调用您的自定义代码,并将调用结果发送到 MessageTransformingHandleroutputChannel

因此,您的流程中需要的是 .transform() 之前和之后的 .channel() 之类的内容。然后在单元测试中,您将测试消息发送到 inputChannel 并验证 outputChannel 中的结果。

我同意我们需要提出一些更简单的开箱即用解决方案,但让我们首先从您的用例开始!

关于java - 如何在 IntegrationFlow 组件上编写单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51711892/

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