当前位置: 首页 > 知识库问答 >
问题:

流的集成测试(Java DSL配置)

东郭翰音
2023-03-14

我正在尝试为流配置实现一些测试。我将JMS入站通道适配器作为流的入口点,并将出站文件通道适配器(带有附加的ExpressionEvaluatingRequestHandlerAdvice)作为最后一个endpoint。

下面是一个示例代码

@Bean
public IntegrationFlow fileProcessingFlow() {
    DefaultMessageListenerContainer dmlc = new DefaultMessageListenerContainer();
    dmlc.setConnectionFactory(connectionFactory);
    dmlc.setDestination(jmsQueue);

    return IntegrationFlows.from(Jms.messageDrivenChannelAdapter(dmlc))
        .<String, File>transform(p -> new File(p))
        .handle(headerEnricherService)
        .<Boolean>route("T(SomeEnum).INVALID.equals(headers['headerName'])", mapping -> mapping 
            .subFlowMapping(Boolean.TRUE, sf -> sf.handle(serviceRef, "handleInvalidFile"))
            .subFlowMapping(Boolean.FALSE, sf -> sf
                .handle(serviceRef, "handleValidFile")
                .handle(anotherServiceRef)))
        .filter(additionalFilterRef)
        .handle(Files.outboundAdapter("'output/dir/path'")
                     .autoCreateDirectory(true)
                     .deleteSourceFiles(true),
                c -> c.advice(fileCopyAdvice()))
        .get();
}
    null

谢谢你。

共有1个答案

聂季同
2023-03-14

好吧,亚历克斯,

因为你找不到任何样品,也找不到任何文章或其他东西,这意味着没有这样的东西。

仅仅因为Spring Integration没有一个固执己见的测试工具。

默认情况下,endpoint通过DirectChannel连接,其中bean名称基于以下模式:[integrationflow.beanname].channel#[channelNameIndex]

因此,在您的示例中,jms.messagedrivenchanneladapter()之后和transform()之前的通道具有类似于fileprocessingflow.channel#0的bean名称。

不确定您对MessageHistory的担忧。您可以简单地在测试工具中再添加一个@configuration类,在其中声明@enableMessageHistory

 类似资料:
  • 我有一些问题。 允许在集成测试类中自动拥有控制器? 如何为这个控制器创建bean. 我有配置问题:help:

  • 在spring integration (Java DSL)中,如何定义一个完整流程的事务? 通过Spring集成,我们可以定义一个示例流程: 我需要一个跨度整个流程的交易。目前,当我使用“aMessage转换器”访问数据库时,事务将在处理完此消息转换器后关闭。但是我需要一个在处理“另一个消息转换器”时仍未提交的事务? 我希望只需添加一个“@Transactional”(或@Transaction

  • 我已经建立了一个简单的Spring集成流程,该流程由以下步骤组成: 然后定期轮询一个rest api 对有效载荷做一些处理 并将其置于Kafka主题上。 请遵守以下代码: 这非常有效,然而,我正在努力想出一些好的测试。 我应该如何模拟外部RESTAPI

  • 当msg处理抛出异常时,如何有效地支持JMS重新交付? 我有一个使用JMS(ActiveMQ)的流,它具有配置为允许n次重新传递尝试的连接工厂。 我希望在处理msg时出现任何错误,导致msg在connectionFactory配置允许的情况下被放回重新交付,然后在最大重新交付尝试用尽时,交付给DLQ。与AMQ保持一致。 对一个相关SO问题的回答意味着我可能会有一个重新抛出的错误通道,它应该触发重新

  • 例如,我想用和测试Kafka/Flink的集成。 该过程将是: 与Flink一起阅读Kafka主题 用Flink进行一些操作 和Flink一起写另一个Kafka主题 以字符串为例,从输入主题中读取字符串,转换为大写,写入新主题。 问题是如何测试流量? 当我说测试时,这是单元/集成测试。 谢谢!

  • 英文原文:http://emberjs.com/guides/testing/integration/ 集成测试通常用来测试应用中得重要工作流。集成测试用来模拟用户交互和确认交互结果。 设置 为了对Ember应用进行集成测试,需要在测试框架中运行应用。首先需要将根元素(root element)设置为任意一个已知将存在的元素。如果根元素在测试运行时可见的话,这对测试驱动开发非常有用,带来的帮助非常