如何在 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())
端点来实现。
我有一个集成流程来轮询某个文件夹中的 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())
端点来实现。