У меня есть приложение Spring Boot, для которого я пишу контрактные тесты с использованием Pact-JVM. Это провайдер.
Я добавил следующие зависимости/конфигурации пактов в build.gradle: я использую Java 11, Gradle 6.3.
plugins {
id 'au.com.dius.pact' version '4.1.6'
}
dependencies {
testImplementation 'ch.qos.logback:logback-core:1.2.3'
testImplementation 'ch.qos.logback:logback-classic:1.2.3'
testImplementation 'au.com.dius.pact.provider:junit5:4.1.6'
}
Вот мой проверочный тест:
@Provider("product")
@PactBroker(host = "localhost", scheme = "http", port = "9292")
class PactVerificationTest {
@BeforeEach
void setupTestTarget(PactVerificationContext context) {
context.setTarget(new HttpTestTarget("localhost", 9002, "/"));
}
@TargetRequestFilter
public void addAuthorizationHeadersStripContextPathRequestFilter(HttpRequest request) throws URISyntaxException {
request.addHeader("USER_ID", "1231324123414");
request.addHeader("AB_USER", "1231324123414");
request.addHeader("AB_USERGROUP", "installtrial");
String rawUri = request.getRequestLine().getUri();
((HttpRequestBase) request).setURI(new URI(rawUri.replaceFirst("/product/", "/")));
}
@TestTemplate
@ExtendWith(PactVerificationInvocationContextProvider.class)
void pactVerificationTestTemplate(PactVerificationContext context) {
context.verifyInteraction();
}
@State("Given products available")
public void testProductDetails() {
}
}
Я ожидаю, что заголовки авторизации, добавленные в аннотированный метод TargetRequestFilter, будут частью запроса, но эти заголовки отсутствуют в запросе. Можете ли вы помочь мне, что я делаю неправильно здесь?
Кроме того, я ищу пример использования последней версии pact-jvm. Я не смог найти в примерах, предоставленных pact-jvm.