【发布时间】:2019-07-04 14:00:42
【问题描述】:
我有这个来自 Writing Contract Tests with Pact in Spring Boot 的 SpringBoot 和 Pact 测试示例
@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 文件,我需要启动一个 mock Provider,它设置为:
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 中做类似的事情?我可以使用在指定端口(例如 http://localhost:8080)中运行的 EmbeddedServer,以便我的 Pact MockProvider 可以监听该端口吗?
我想在测试类中指定端口,而不是在 application.yml 文件中
有什么想法吗?
【问题讨论】:
标签: java spring-boot junit pact micronaut