У меня есть этот пример теста SpringBoot и Pact из Написание контрактных тестов с Pact в Spring Boot
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE,
properties = "user-service.base-url:http://localhost:8080",
classes = UserServiceClient.class)
public class UserServiceContractTest {
@Rule
public PactProviderRuleMk2 provider = new PactProviderRuleMk2("user-service", null,
8080, this);
@Autowired
private UserServiceClient userServiceClient;
@Pact(consumer = "messaging-app")
public RequestResponsePact pactUserExists(PactDslWithProvider builder) {
return builder.given("User 1 exists")
.uponReceiving("A request to /users/1")
.path("/users/1")
.method("GET")
.willRespondWith()
.status(200)
.body(LambdaDsl.newJsonBody((o) -> o
.stringType("name", “user name for CDC”)
).build())
.toPact();
}
@PactVerification(fragment = "pactUserExists")
@Test
public void userExists() {
final User user = userServiceClient.getUser("1");
assertThat(user.getName()).isEqualTo("user name for CDC");
}
}
Чтобы создать файл PACT, мне нужно запустить фиктивный провайдер,который устанавливается как:
public PactProviderRuleMk2 provider = new PactProviderRuleMk2("user-service", null,
8080, this);
Аннотация @SpringBootTest предоставляет фиктивную веб-среду, работающую на http://localhost:8080
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE,
properties = "user-service.base-url:http://localhost:8080",
classes = UserServiceClient.class)
Возможно ли сделать что-то подобное в Micronaut?Могу ли я использовать EmbeddedServer, работающий в указанном порту, например http://localhost:8080, чтобы мой Pact MockProvider мог прослушивать этот порт?
Я хотел бы указать порт в тестовом классе, а не в приложении.yml file
Есть идеи?