我的集成流量没有输出通道的单位测试案例



我只有一个句柄((,然后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(sendAndReceiveconvertSendAndReceive操作(。

最新更新