Download pact-jvm-provider-junit5-spring JAR file with all dependencies
pact-jvm-provider-junit5-spring from group au.com.dius (version 4.0.10)
# Pact Spring/JUnit5 Support
This module extends the base [Pact JUnit5 module](../pact-jvm-provider-junit5). 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:
```java
@ExtendWith(SpringExtension.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
@Provider("Animal Profile Service")
@PactBroker
public class ContractVerificationTest {
@TestTemplate
@ExtendWith(PactVerificationSpringProvider.class)
void pactVerificationTestTemplate(PactVerificationContext context) {
context.verifyInteraction();
}
}
```
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:
```yaml
pactbroker:
host: your.broker.host
auth:
username: broker-user
password: broker.password
```
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:
```java
@WebMvcTest
@Provider("myAwesomeService")
@PactBroker
class ContractVerificationTest {
@Autowired
private MockMvc mockMvc;
@TestTemplate
@ExtendWith(PactVerificationInvocationContextProvider.class)
void pactVerificationTestTemplate(PactVerificationContext context) {
context.verifyInteraction();
}
@BeforeEach
void before(PactVerificationContext context) {
context.setTarget(new MockMvcTestTarget(mockMvc));
}
}
```
You can also use `MockMvcTestTarget` for tests without spring context by providing the controllers manually.
For example:
```java
@Provider("myAwesomeService")
@PactFolder("pacts")
class MockMvcTestTargetStandaloneMockMvcTestJava {
@TestTemplate
@ExtendWith(PactVerificationInvocationContextProvider.class)
void pactVerificationTestTemplate(PactVerificationContext context) {
context.verifyInteraction();
}
@BeforeEach
void before(PactVerificationContext context) {
MockMvcTestTarget testTarget = new MockMvcTestTarget();
testTarget.setControllers(new DataResource());
context.setTarget(testTarget);
}
@RestController
static class DataResource {
@GetMapping("/data")
@ResponseStatus(HttpStatus.NO_CONTENT)
void getData(@RequestParam("ticketId") String ticketId) {
}
}
}
```
**Important:** Since `@WebMvcTest` starts only Spring MVC components you can't use `PactVerificationSpringProvider`
and need to fallback to `PactVerificationInvocationContextProvider`
0 downloads
Artifact pact-jvm-provider-junit5-spring
Group au.com.dius
Version 4.0.10
Last update 18. April 2020
Tags: need using test junit5 beforeeach springboottest annotation time username restcontroller file pactverificationtesttemplate only verifyinteraction autowired quot template contractverificationtest creating static support host mockmvc interaction without fallback verification then will each components auth yaml before dataresource data spring private tests pactverificationcontext spin springextension requestparam httpstatus pactverificationinvocationcontextprovider just files module mockmvctesttarget void controllers starts setcontrollers additional string extendwith base myawesomeservice method annotations public broker ticketid webmvctest resources invocation since defined_port no_content password settarget takes more apos pactbroker required extends manually class providing properties requires pactverificationspringprovider that pact webenvironment whole often against example lightweight this testtemplate call generate testtarget writing annotated from mockmvctesttargetstandalonemockmvctestjava parameter order details getmapping able setup pactfolder responsestatus profile animal application with important your getdata provider junit database which source there target service context java also user pacts found
Organization not specified
URL https://github.com/DiUS/pact-jvm
License Apache 2
Dependencies amount 0
Dependencies No dependencies
There are maybe transitive dependencies!
Group au.com.dius
Version 4.0.10
Last update 18. April 2020
Tags: need using test junit5 beforeeach springboottest annotation time username restcontroller file pactverificationtesttemplate only verifyinteraction autowired quot template contractverificationtest creating static support host mockmvc interaction without fallback verification then will each components auth yaml before dataresource data spring private tests pactverificationcontext spin springextension requestparam httpstatus pactverificationinvocationcontextprovider just files module mockmvctesttarget void controllers starts setcontrollers additional string extendwith base myawesomeservice method annotations public broker ticketid webmvctest resources invocation since defined_port no_content password settarget takes more apos pactbroker required extends manually class providing properties requires pactverificationspringprovider that pact webenvironment whole often against example lightweight this testtemplate call generate testtarget writing annotated from mockmvctesttargetstandalonemockmvctestjava parameter order details getmapping able setup pactfolder responsestatus profile animal application with important your getdata provider junit database which source there target service context java also user pacts found
Organization not specified
URL https://github.com/DiUS/pact-jvm
License Apache 2
Dependencies amount 0
Dependencies No dependencies
There are maybe transitive dependencies!
Page 1 from 1 (items total 1)