spring-integration - 如何在 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 集成测试框架。所以,你httpRequestExecutingMessageHandler
可以用MockIntegration.mockMessageHandler()
你真正可以在handleNextAndReply()
.
另一种选择就像一个MockMvc并将其MockMvcClientHttpRequestFactory
注入RestTemplate
到HttpRequestExecutingMessageHandler
.
ExpressionEvaluatingRequestHandlerAdvice
应用在.handle(httpRequestExecutingMessageHandler())
端点上可以实现成功或失败。
推荐阅读
- javascript - 检查传单地图上的位置是否是标记
- python-3.x - 一次创建具有多个图形的场景
- java - 系统的消息消费者组件处理每条消息并使用 WebSockets 异步通知看护者应用程序
- sql - 在 SQL 中显示工作日和周末用例
- python - 有没有更有效的方法来使用它的索引遍历一个字符串的每个字符?
- html - 奇怪的 HTML 问题。点击链接时文字变小
- excel - 通过 excel VBA 打开 PowerPoint
- javascript - 如何制作一个按钮,将用户带到另一个网站上的特定位置
- css - Lighthouse:确保在加载 MaterialDesignIcons Webfonts 期间文本保持可见
- android - 如何创建一个联结查询,从联结本身返回一个值?