跟踪Spring Integration消息通道的输入和输出

时间:2018-12-18 15:12:38

标签: spring spring-mvc junit spring-integration

我已经使用Spring Integration构建了一个小型应用程序。我还写了一些用于更多服务和其他类的jUnit。 我已经将XML配置用于通道和点配置,我想知道是否可以测试垂直通道的输入和输出。 有没有一种方法可以测试通道的输入和输出?..

更新

我正在尝试以下流程。我应该如何进行?

2018/12/18 16:35:17 [crit] 16#16: *95010 open() "/var/tmp/nginx/uwsgi/1/42/0000000421" failed (13: Permission denied) while reading upstream, client: 172.31.72.76, server: , request: "GET /tokens?limit=501&offset=0&order=desc&owner_id=11111 HTTP/1.1", upstream: "uwsgi://unix:/run/server.socket:", host: "oauth.dev.bla_bla.com"

那我该怎么写Test contex?

下面是通道流调用的方法。

<int:channel id="getPresciption" />
<int:channel id="respPrescription" />
<int:channel id="storePrcedureChannell" />

<int-http:inbound-gateway
    request-channel="getPresciption" reply-channel="respPrescription"
    supported-methods="GET" path="/getAllPresciption">

    <int-http:request-mapping
        consumes="application/json" produces="application/json" />
</int-http:inbound-gateway>

<int:service-activator
    ref="prescriptionServiceActivator" method="buildPrescription"
    input-channel="getPresciption" output-channel="storePrcedureChannell" />

<int:service-activator
    ref="prescriptionServiceActivator" method="storePrescription"
    input-channel="storePrcedureChannell"></int:service-activator>

1 个答案:

答案 0 :(得分:1)

首先,您可以看一下Spring Integration Testing Framework:https://docs.spring.io/spring-integration/reference/html/testing.html#test-context

然后使用MockIntegration.mockMessageHandler()MockIntegrationContext.substituteMessageHandlerFor()来替换端点中的真实处理程序并验证从通道传入的数据。

如果这对您仍然很困难,您始终可以将这些通道注入测试类,并向其添加ChannelInterceptor并在其preSend()实现中验证消息。