【问题标题】:Spring Integration Tests春季集成测试
【发布时间】:2022-10-14 22:00:45
【问题描述】:

我正在尝试创建简单的测试来检查错误通道是否从流通道获取消息

@Bean(START_PROCESSING_CHANNEL)
MessageChannel processingStart() {
    return new DirectChannel();
}

@Bean(CUSTOM_ERROR_CHANNEL)
MessageChannel channelError() {
    return new DirectChannel();
}

代码工作正常,但在创建测试时存在一些问题 - 我将消息发送到 processingStart 通道,拦截器工作正常,但我从 buildErrorStartMessage() 获得带有标头的有效负载,或者当我添加 * 时测试失败

    when(processor.registerNewEntity(any(), any())).thenReturn(buildEntityErrorMessage());
    when(processor.transformEntity(any(), any())).thenThrow(new IllegalArgumentException()); (*)
    startChannel.addInterceptor(new WireTap(errorChannel));
    startChannel.send(buildErrorStartMessage());
    verify(errorHandler,times(1)).processException(messageArgumentCaptor.capture());

我认为那是正确的,但我怎样才能发现错误?

【问题讨论】:

    标签: spring-integration


    【解决方案1】:

    您的逻辑不清楚,WireTap 只是发出发送到已添加此拦截器的通道的消息。

    如果这对您来说真的足够了,那么您的errorHandler 必须订阅您的errorChannel。但同样:这不是错误 - 只是发送消息拦截并将其生成到 errorChannel

    在 Spring Integration 文档中查看有关测试的更多信息:https://docs.spring.io/spring-integration/docs/current/reference/html/testing.html#testing

    【讨论】:

      猜你喜欢
      • 2017-07-28
      • 2019-08-05
      • 1970-01-01
      • 2011-09-26
      • 2012-09-12
      • 1970-01-01
      • 1970-01-01
      • 2019-02-02
      • 2019-07-12
      相关资源
      最近更新 更多