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

时间:2018-07-16 11:09:07

标签: spring-integration spring-integration-dsl

我有一个集成流程,可以从某个文件夹轮询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中或失败。但是我不知道如何开始。谁能给我一些提示?谢谢

1 个答案:

答案 0 :(得分:0)

请查看Spring Integration Testing Framework。因此,您的httpRequestExecutingMessageHandler可以替换为MockIntegration.mockMessageHandler(),在这里您实际上可以在handleNextAndReply()中产生任何可能的模拟答复。

另一个选项类似于MockMvc,其MockMvcClientHttpRequestFactory将被注入RestTemplate的{​​{1}}中。

通过将HttpRequestExecutingMessageHandler端点上的ExpressionEvaluatingRequestHandlerAdvice应用于成功或失败。