2
我是春季整合新手。我需要为整数图编写单元测试。该图从网关 - >分离器 - >浓缩器 - >聚合器 - >变压器开始。所以如果我想单独为丰富者编写一个单元测试,我该如何去做。如何在春季集成中进行单元测试?
我提到this文章,但他们都只有一个组件。但是,在这种情况下如何做到这一点。
我是春季整合新手。我需要为整数图编写单元测试。该图从网关 - >分离器 - >浓缩器 - >聚合器 - >变压器开始。所以如果我想单独为丰富者编写一个单元测试,我该如何去做。如何在春季集成中进行单元测试?
我提到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"));
}
如果我想测试富集独自一人,我已经把消息发送到通道和输出自动流向聚合器在我的例子中,如何重新路由和检查..? – Manoj
请参阅已编辑的答案。 –
谢谢..那么testEnricher()将确保消息不会从HE中进入通道,而是转到testEnricher中定义的输出通道? ...流量会停止吗? – Manoj