如何在 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"));
}
我是 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"));
}