首页 > 解决方案 > 如何在 Spring 集成中使用 FileReadingMessageSource 和 HttpRequestExecutingMessageHandler 测试 IntegrationFlow

问题描述

我有一个集成流程来轮询某个文件夹中的 json 文件并将它们发送到休息 http 端点。在我的代码下面:

@Bean
public IntegrationFlow jsonFileToRestFlow() {
    return IntegrationFlows
            .from("fileInputChannel")
            .transform(new FileToStringTransformer())
            .enrichHeaders(s -> s.header("Content-Type", "application/json; charset=utf8"))
            .handle(httpRequestExecutingMessageHandler())
            .get();
}

在收到http端点的响应后,我会将我的文件移动到成功或失败的通道。现在我想测试我的代码。测试此代码的最佳方法是什么。我的想法是json在我的文件中放入一些文件inputChannel,然后模拟我的 http 响应并检查预期的消息是否存在successChannel或失败。但我不知道如何开始。谁能给我一些提示?谢谢

标签: spring-integrationspring-integration-dsl

解决方案


请看一下Spring 集成测试框架。所以,你httpRequestExecutingMessageHandler可以用MockIntegration.mockMessageHandler()你真正可以在handleNextAndReply().

另一种选择就像一个MockMvc并将其MockMvcClientHttpRequestFactory注入RestTemplateHttpRequestExecutingMessageHandler.

ExpressionEvaluatingRequestHandlerAdvice应用在.handle(httpRequestExecutingMessageHandler())端点上可以实现成功或失败。


推荐阅读