如何在 spring 集成中进行单元测试。?

How to do unit test in spring integration.?

我是 spring 集成的新手。我需要为积分图编写单元测试。这个图从gateway->splitter->enricher->aggregator->Transformer开始。所以如果我想单独为 enricher 编写单元测试,我需要怎么做。?

我参考了 this 篇文章,但所有文章都只有一个组成部分。但是在这种情况下如何做呢?

不清楚为什么您引用的答案所引用的测试样本对您没有帮助。流程中有什么并不重要;基本思想是将消息发送到流的开始并检查流结束的结果,也许通过用队列通道替换最终通道,您可以从测试用例中轮询。

您可以 stop() 最终消费者,这样他就不会获取结果。

编辑:(回应以下评论)。

可以抢占组件的输出通道...

...

<int:channel id="toHE"/>

<int:header-enricher id="he" input-channel="toHE" output-channel="fromHE">
    <int:header name="foo" value="bar"/>
</int:header-enricher>

<int:channel id="fromHE"/>

...

然后...

@Autowired
private MessageChannel toHE;

@Autowired
@Qualifier("he.handler")
private MessageTransformingHandler headerEnricher;

@Test
@DirtiesContext
public void testEnricher() {
    PollableChannel outputChannel = new QueueChannel();
    headerEnricher.setOutputChannel(outputChannel);
    toHE.send(MessageBuilder.withPayload("baz").build());
    Message<?> out = outputChannel.receive(10000);
    assertNotNull(out);
    assertEquals("bar", out.getHeaders().get("foo"));
}