Pact Spring/JUnit5 Support
This module extends the base Pact JUnit5 module. See that for more details.
For writing Spring Pact verification tests with JUnit 5, there is an JUnit 5 Invocation Context Provider that you can use with
the @TestTemplate annotation. This will generate a test for each interaction found for the pact files for the provider.
To use it, add the @Provider and @ExtendWith(SpringExtension.class) and one of the pact source annotations to your test class (as per a JUnit 5 test), then
add a method annotated with @TestTemplate and @ExtendWith(PactVerificationSpringProvider.class) that
takes a PactVerificationContext parameter. You will need to call verifyInteraction() on the context parameter in
your test template method.
For example:
You will now be able to setup all the required properties using the Spring context, e.g. creating an application YAML file in the test resources:
You can also run pact tests against MockMvc without need to spin up the whole application context which takes time
and often requires more additional setup (e.g. database). In order to run lightweight tests just use @WebMvcTest
from Spring and MockMvcTestTarget as a test target before each test.
For example:
You can also use MockMvcTestTarget for tests without spring context by providing the controllers manually.
For example:
Important: Since @WebMvcTest starts only Spring MVC components you can't use PactVerificationSpringProvider
and need to fallback to PactVerificationInvocationContextProvider