Могу ли я настроить создание теста Spring Cloud Contract Pact для обработки контекста в пути URL?

У меня здесь есть демонстрационный проект https://github.com/donalthurley/pact-demo, который показывает мою проблему.

Общая проблема заключается в том, что я пытаюсь разработать API, который соответствует контракту PACT, в котором контракт использует URL-путь, включающий контекст.

API контроллера загрузки Spring отображает запрос без контекста в пути, см. https://github.com/donalthurley/pact-demo/blob/master/src/main/java/com/example/demo/DemoController.java#L22

Контракт PACT определяет тот же запрос с контекстом 'demo', добавленным к пути URL-адреса, см. https://github.com/donalthurley/pact-demo/blob/master/src/main/resources/demo-pact.json#L14

Когда pact генерирует модульные тесты, он терпит неудачу в этом случае с ошибкой 404.

Если контекст удален из контракта PACT, то сгенерированные тесты проходят успешно.

У меня такой вопрос: могу ли я сказать поколению PACT использовать «демонстрационный» контекст, чтобы сгенерированные тесты работали?

Этот предыдущий ответ Как установить путь контекста в Spring Boot WebMvcTest предполагает, что это невозможно, но я хотел бы подтвердить это, поскольку не понимаю, почему это не должно поддерживаться.


person Donal Hurley    schedule 12.03.2019    source источник


Ответы (1)


По моему скромному мнению, вам не следует включать контекст в пакт, как это делает ваш контроллер.
Я думаю, вы используете какой-то API-шлюз, поэтому все действия с контекстом должны быть прекращены, как только вы покинете API-шлюз. На вашем уровне обслуживания контекст уже не имеет значения.

person Yosi Karl    schedule 14.03.2019
comment
Я согласен с этим. Я думаю, что в контракте PACT не следует использовать контекст. Я подумал, что, возможно, RestAssuredMockMvc может позволить вам установить контекст, который будет поддерживать интеграционное тестирование, которое Spring позволяет вам делать на контроллерах. Но я думаю, что, вероятно, лучший вариант для меня - это попросить составителей контракта PACT исключить контекст. - person Donal Hurley; 15.03.2019