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 со свойствами все еще не работает