License |
License |
---|---|
Categories |
CategoriesGroovy Languages |
GroupId | GroupIdau.com.dius |
ArtifactId | ArtifactIdpact-jvm-consumer-groovy-v3_2.11 |
Version | Version3.0.4 |
Type | Typejar |
Description |
Descriptionpact-jvm-consumer-groovy-v3_2.11
pact-jvm-consumer-groovy-v3
===========================
Groovy DSL for Pact JVM implementing V3 specification changes.
##Dependency
The library is available on maven central using:
* group-id = `au.com.dius`
* artifact-id = `pact-jvm-consumer-groovy-v3_2.11`
* version-id = `2.2.x` or `3.0.x`
##Usage
Add the `pact-jvm-consumer-groovy-v3` library to your test class path. This provides a `PactMessageBuilder` class for you to use
to define your pacts.
If you are using gradle for your build, add it to your `build.gradle`:
dependencies {
testCompile 'au.com.dius:pact-jvm-consumer-groovy-v3_2.11:2.2.12'
}
## Consumer test for a message consumer
The `PactMessageBuilder` class provides a DSL for defining your message expectations. It works in much the same way as
the `PactBuilder` class for Request-Response interactions.
### Step 1 - define the message expectations
Create a test that uses the `PactMessageBuilder` to define a message expectation, and then call `run`. This will invoke
the given closure with a message for each one defined in the pact.
```groovy
def eventStream = new PactMessageBuilder().call {
serviceConsumer 'messageConsumer'
hasPactWith 'messageProducer'
given 'order with id 10000004 exists'
expectsToReceive 'an order confirmation message'
withMetaData(type: 'OrderConfirmed') // Can define any key-value pairs here
withContent(contentType: 'application/json') {
type 'OrderConfirmed'
audit {
userCode 'messageService'
}
origin 'message-service'
referenceId '10000004-2'
timeSent: '2015-07-22T10:14:28+00:00'
value {
orderId '10000004'
value '10.000000'
fee '10.00'
gst '15.00'
}
}
}
```
### Step 2 - call your message handler with the generated messages
This example tests a message handler that gets messages from a Kafka topic. In this case the Pact message is wrapped
as a Kafka `MessageAndMetadata`.
```groovy
eventStream.run { Message message ->
messageHandler.handleMessage(new MessageAndMetadata('topic', 1,
new kafka.message.Message(message.contentsAsBytes()), 0, null, valueDecoder))
}
```
### Step 3 - validate that the message was handled correctly
```groovy
def order = orderRepository.getOrder('10000004')
assert order.status == 'confirmed'
assert order.value == 10.0
```
### Step 4 - Publish the pact file
If the test was successful, a pact file would have been produced with the message from step 1.
|
Project URL |
Project URL |
Source Code Management |
Source Code Management |
<!-- https://jarcasting.com/artifacts/au.com.dius/pact-jvm-consumer-groovy-v3_2.11/ -->
<dependency>
<groupId>au.com.dius</groupId>
<artifactId>pact-jvm-consumer-groovy-v3_2.11</artifactId>
<version>3.0.4</version>
</dependency>
// https://jarcasting.com/artifacts/au.com.dius/pact-jvm-consumer-groovy-v3_2.11/
implementation 'au.com.dius:pact-jvm-consumer-groovy-v3_2.11:3.0.4'
// https://jarcasting.com/artifacts/au.com.dius/pact-jvm-consumer-groovy-v3_2.11/
implementation ("au.com.dius:pact-jvm-consumer-groovy-v3_2.11:3.0.4")
'au.com.dius:pact-jvm-consumer-groovy-v3_2.11:jar:3.0.4'
<dependency org="au.com.dius" name="pact-jvm-consumer-groovy-v3_2.11" rev="3.0.4">
<artifact name="pact-jvm-consumer-groovy-v3_2.11" type="jar" />
</dependency>
@Grapes(
@Grab(group='au.com.dius', module='pact-jvm-consumer-groovy-v3_2.11', version='3.0.4')
)
libraryDependencies += "au.com.dius" % "pact-jvm-consumer-groovy-v3_2.11" % "3.0.4"
[au.com.dius/pact-jvm-consumer-groovy-v3_2.11 "3.0.4"]
Group / Artifact | Type | Version |
---|---|---|
com.typesafe.scala-logging : scala-logging_2.11 | jar | 3.1.0 |
au.com.dius : pact-jvm-consumer-groovy_2.11 | jar | 3.0.4 |
org.codehaus.groovy : groovy-all | jar | 2.4.4 |
org.json4s : json4s-native_2.11 | jar | 3.2.11 |
au.com.dius : pact-jvm-model-v3_2.11 | jar | 3.0.4 |
org.slf4j : slf4j-api | jar | 1.7.7 |
org.scala-lang.modules : scala-xml_2.11 | jar | 1.0.2 |
org.scala-lang : scala-library | jar | 2.11.7 |
org.json4s : json4s-jackson_2.11 | jar | 3.2.11 |
Group / Artifact | Type | Version |
---|---|---|
junit : junit | jar | 4.12 |
org.specs2 : specs2-core_2.11 | jar | 3.6.4 |
org.hamcrest : hamcrest-all | jar | 1.3 |
org.spockframework : spock-core | jar | 1.0-groovy-2.4 |
org.specs2 : specs2-junit_2.11 | jar | 3.6.4 |
org.mockito : mockito-core | jar | 1.9.5 |
ch.qos.logback : logback-classic | jar | 1.1.2 |