Интеграция тестирования провайдера с брокером pact для конфигурации Spring Boot junit5 + в свойствах приложения - PullRequest
0 голосов
/ 10 февраля 2020

pact-jvm-provider-spring утверждает, что для теста провайдера junit5 использование библиотеки пружин не требуется.

Однако аннотация @PactBroker зависит от свойств системы. Есть ли способ заставить это работать для свойств приложения через Spring Property Resolver. Я попытался создать что-то похожее на SpringEnvironmentResolver.kt и использовал его в настройках контекста. Но это не сработало.

@Provider("api-provider-app")
@PactBroker
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@ActiveProfiles("test")
public class PactVerificationTest {
    @LocalServerPort
    private int port;

    @Autowired
    private Environment environment;

    @TestTemplate
    @ExtendWith(PactVerificationInvocationContextProvider.class)
    void testTemplate(Pact pact, Interaction interaction, HttpRequest request,
                  PactVerificationContext context) {
        context.setTarget(new HttpTestTarget("localhost", port));
        context.setValueResolver(new SpringResolver(environment));
        context.verifyInteraction();
    }
}

Я получаю следующее ошибка

Указан неверный хост посредника пакта ('$ {pactbroker.host:}' ). Пожалуйста, укажите действительный хост или укажите системное свойство 'pactbroker.host'.

Обновление После еще одного поиска выяснилось, что setTarget не работает и его необходимо переместить в метод @BeforeEach.

@BeforeEach
void setContext(PactVerificationContext context) {
    context.setValueResolver(new SpringResolver(environment));
    context.setTarget(new HttpTestTarget("localhost", port));
}

Следующий фрагмент помог ему работать с аннотацией @PactFolder. Но @PactBroker со свойствами все еще не работает

1 Ответ

1 голос
/ 22 февраля 2020

В Pact-JVM добавлен новый модуль, который расширяет поддержку JUnit5, позволяя настраивать значения в контексте Spring. См. https://github.com/DiUS/pact-jvm/tree/master/provider/pact-jvm-provider-junit5-spring. Он будет выпущен со следующей версией Pact-JVM, которая будет 4.0.7.

...