如何在 spring 集成中使用 FileReadingMessageSource 和 HttpRequestExecutingMessageHandler 测试 IntegrationFlow

How to test IntegrationFlow with FileReadingMessageSource and HttpRequestExecutingMessageHandler in spring integration

我有一个集成流程来轮询某个文件夹中的 json 文件并将它们发送到 rest 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 Integration Testing Framework。因此,您的 httpRequestExecutingMessageHandler 可以替换为 MockIntegration.mockMessageHandler(),您实际上可以在 handleNextAndReply().

中生成任何可能的模拟回复

另一个选项就像 MockMvc 和它的 MockMvcClientHttpRequestFactory 被注入到 RestTemplate 中用于 HttpRequestExecutingMessageHandler

成功或失败可以通过ExpressionEvaluatingRequestHandlerAdvice应用于.handle(httpRequestExecutingMessageHandler())端点来实现。