2015-06-02 2 views
1

У меня настроена конфигурация потока Spring Integration для отправки сообщений на внешнюю веб-службу, а затем отмена отмены ответа, а затем выполнение некоторой последующей обработки на основе типа объекта ответа.Весна Интеграция WS: mock Конечная точка для ответа на ответ

У меня есть следующие конфигурации: outbound-gateway

<int:channel id="sendRequestChannel"/> 
<ws:outbound-gateway request-channel="sendRequestChannel" uri="${send.ws.uri}" reply-channel="responseTransformer" > 
    <ws:request-handler-advice-chain> 
     <ref bean="retryAdviceUserUpdateWs" /> 
    </ws:request-handler-advice-chain> 
</ws:outbound-gateway> 

Теперь я хочу, чтобы проверить поток и проверить, что правильная обработка пост запускается на основе объекта ответа.

Есть ли в моем интеграционном тесте, чтобы высмеять ответ конечной точки на основе сообщения, которое я отправляю?

ответ

0

На самом деле вы должны понимать, из какой части вашего потока было бы лучше высмеять и вернуть желаемый ответ.

  1. Вы можете вводить ChannelInterceptor в sendRequestChannel с preSend, который возвращает null, чтобы предотвратить дальнейший процесс и send сообщение с желаемым ответом на responseTransformer.

  2. Еще один мощный вариант - добавить еще Advice в <ws:request-handler-advice-chain> и реализовать его как расширение AbstractRequestHandlerAdvice.

  3. И последний вариант, который я вижу через код Java, является mock для WebServiceTemplate.sendAndReceive и вводит его в <ws:outbound-gateway>.

  4. С другой стороны, я знаю, что у SoapUI есть инструмент для целевого сервиса mock, поэтому вам даже не нужно ничего делать на Java, если только не тесты.

Итак, это зависит от вас, чтобы выбрать правильный способ протестировать поток.

+0

С благодарностью Артем, на самом деле мне нужно реализовать посмеянный ответ на Java, поскольку мне нужно выполнить тесты интеграции, чтобы проверить, что в конце потока входное сообщение сохраняется в БД. Я попробую варианты, которые вы написали, и посмотрите, что лучше всего подходит. –