Learning Outcomes

Source Code

https://github.com/pact-foundation/pact-workshop-js

Step

Title

Concept Covered

Learning objectives

Further Reading

Step 1

Create our consumer before the Provider API even exists

Consumer-driven design

Understand use case

https://martinfowler.com/articles/consumerDrivenContracts.html

Step 2

Write a unit test for our consumer

-

How to write a basic unit test for an HTTP Client

How to write a basic unit test for an HTTP Client

https://docs.pact.io/faq/convinceme

Step 3

Write a Pact test for our consumer

Consumer side pact test

Understand "Matchers" to avoid test data brittleness

Understand "Matchers" to avoid test data brittleness

https://docs.pact.io/5-minute-getting-started-guide#scope-of-a-consumer-pact-test

https://docs.pact.io/best_practices/consumer

Step 4

Verify the consumer pact with the Provider API

Provider side pact test

Understand basic Provider-side Pact concepts

Place provider side testing in a broader testing context (e.g., where it fits on the pyramid)

https://docs.pact.io/5-minute-getting-started-guide#scope-of-a-provider-pact-test

Step 5

Fix the consumer's bad assumptions about the Provider

Humans talking to humans (collaboration)

Understand that a tool facilitates collaboration, it doesn't replace it

Step 6

Write a pact test for 404 (missing User) in consumer

Testing API invariants

Understand how we can test "stateful" APIs without having to create complex, sequential API calls

Step 7

Update API to handle 404 case

Provider States

How Pact deals with "stateful" interactions, via the concept of "Provider States"

https://docs.pact.io/getting_started/provider_states

Step 8

Write a pact test for the 404 case

Testing authenticated APIs

Service evolution - adding a new feature

Step 9

Update API to handle 404 case

Service evolution

Understand the challenge of dealing with complex/dynamic data, such as time-bound authentication tokens

Step 10

Fix the provider to support the 404 case

Request filters

Understand Pact's approach to dealing with complex/dynamic data, such as time-bound authentication tokens

Step 11

Implement a broker workflow for integration with CI/CD

Automation

Understand how to use Pact in a CI and CD workflow

https://docs.pact.io/pact_broker

https://docs.pact.io/best_practices/pact_nirvana

Publication date: