我只有一个句柄((,然后get((,没有输出通道。将消息发送到此句柄时,使我正在流回我要寄回的对象。但是在单位测试中,我恢复了布尔值。如何在单位测试中重新将预期对象重新恢复?
以下是代码单元测试。
在单位测试中 - 布尔值即将发送消息而不是预期对象
对象o = this.ackNowledGealarMinputChannel.send(message(; System.out.println("输出:" O(;//打印布尔值真实代码:
@Bean
public IntegrationFlow acknowledgeAlarmGatewayFlow() {
return IntegrationFlows.from("acknowledgeAlarmInputChannel")
.handle(this::createAlarmAckEvent)
.get();
}
单元测试:
@Test
public void testEvent() {
String expectedEMResponse = "{n" +
" "data": {n" +
" "id": 19,n" +
" "type": "alarms",n" +
" "attributes": {}n" +
" }n" +
"}";
MessageHandler mockMessageHandler = mock(MessageHandler.class);
this.acknowledgeAlarmInputChannel.subscribe(mockMessageHandler);
MockRestServiceServer server = MockRestServiceServer.bindTo(restTemplate).build();
server.expect(requestTo(emAcknowledgeEventUrl.replace("{hostID}", "12")))
.andRespond(withSuccess(expectedEMResponse, MediaType.APPLICATION_JSON));
AlarmInstance alarmInstance = new AlarmInstance();
alarmInstance.setAlarmName("a1");
alarmInstance.setInstanceId("1");
alarmInstance.setAcknowledgedAt(new Date());
alarmInstance.setAcknowledgedBy("u1");
alarmInstance.setComponentName("x1");
GenericMessage<AlarmInstance> message = new GenericMessage<AlarmInstance>(alarmInstance);
Object o = this.acknowledgeAlarmInputChannel.send(message);
System.out.println("output: " + o);
}
删除 mockMessageHandler
的东西 - 只需订阅第二个(no -op(处理程序。
QueueChannel replies = new QueueChannel();
Message<AlarmInstance> message = MessageBuilder.withPayload(alarmInstance)
.setReplyChannel(replies)
.build();
this.acknowledgeAlarmInputChannel.send(message);
Message<?> reply = replies.get(0);
assertNotNull(reply);
...
或使用MessagingTemplate
(sendAndReceive
或convertSendAndReceive
操作(。