Skip to content

Instantly share code, notes, and snippets.

@dnno
Last active December 21, 2022 08:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dnno/05508cb2f67fd060de756e479d7b37fe to your computer and use it in GitHub Desktop.
Save dnno/05508cb2f67fd060de756e479d7b37fe to your computer and use it in GitHub Desktop.
JUnit5 style Pact Consumer
@ExtendWith(PactConsumerTestExt.class)
public class PactConsumerJUnit5Test {
@Pact(provider = "UserServiceJUnit5", consumer = "UserConsumer")
public V4Pact getAllUsers(PactBuilder builder) {
String expectedUsers = """
[
{
"id": 1,
"name": "Jane Doe"
},
{
"id": 2,
"name": "John Doe"
}
]
""";
return builder
.usingLegacyDsl()
.given("A running user service")
.uponReceiving("A request for a user list")
.path("/users")
.method("GET")
.willRespondWith()
.status(200)
.headers(Map.of("Content-Type", "application/json"))
.body(expectedUsers)
.toPact()
.asV4Pact()
.get();
}
@Test
@PactTestFor(providerName = "UserServiceJUnit5", pactMethod = "getAllUsers")
void getAllUsers(MockServer mockServer) {
RestTemplate restTemplate = new RestTemplateBuilder().rootUri(mockServer.getUrl()).build();
User[] response = restTemplate.getForObject("/users", User[].class);
assertThat(response)
.isNotNull()
.containsExactly(
new User(1, "Jane Doe"),
new User(2, "John Doe")
);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment