Попытка выяснить, как наилучшим образом выполнить тестирование модуля http:outbound-gateway
в потоке интеграции Spring.Тест интеграции модулей Spring http: outbound-gateway
Вот что наш шлюз выглядит следующим образом:
<int-http:outbound-gateway id="gateway"
request-channel="registrationQueue"
message-converters="jsonMessageConverter"
url-expression="@urlGenerator.resolve()"
http-method="POST"
expected-response-type="javax.ws.rs.core.Response"
reply-channel="nullChannel"
error-handler="httpResponseErrorHandler"/>
В частности, мы хотим ..
- Утверждай сериализации объектов направляются; сделайте
message-converters
правильно обрабатывать сообщения, исходящие отrequest-channel
? - Проверьте обработку ответа от стороннего сервиса; что такое поведение при различных ответах (ожидается & неожиданно) и ошибки (внутренние & внешние)?
У нас есть несколько модульных тестов, которые издеваются над конечными точками и утверждают, что шаги нашего рабочего процесса интеграции ведут себя так, как ожидалось. Что-то вроде следующего:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:test-config.xml"})
public class FileRegistrationWorkflowTest {
...
@Autowired
private MessageChannel fileFoundChannel;
@Autowired
private QueueChannel testRegistrationQueue;
...
@Test
public void shouldQueueRegistrationForFileWithEntityId() {
// Given
mockFileLookupService(FILE_ID, FILENAME_WITH_ENTITY_ID);
// When
fileFoundChannel.send(MessageBuilder.withPayload(FILE_ID).build());
// Then
Message<?> message = testRegistrationQueue.receive();
assertThat(message, hasPayload(expected));
}
}
Этот метод тестирования отлично подходит для шагов по технологическому процессу. Наша проблема заключается в проверке шлюзов конечной точки.
- Мы не можем высмеивать
http:outbound-gateway
, тогда мы его не тестируем. - Мы не хотим развертывать реальный HTTP-сервис для взаимодействия, это скорее интеграционный тест.
- Третий сторонний сервис разрешен только
url-expression
, поэтому нет весны для издевательства.
Возможно, мы сможем перехватить HTTP-запрос Spring пытается отправить?
Удивительный, звучит как то, что я ищу, спасибо Гэри. –