Daniel Raniz Raneland

Three-and-a-half Ways of Testing your Repositories

Are your repository tests brittle and slow? Discover how to use ephemeral containers for high-fidelity tests that are fast, reliable, and nearly identical to production.

Three-and-a-half Ways of Testing your Repositories
#1about 5 minutes

Introduction to repositories in domain-driven design

Repositories act as an abstraction layer between the domain and infrastructure, separating business logic from data persistence concerns.

#2about 9 minutes

Mocking the client API for fast and isolated tests

The first method involves replacing the backend client, like an S3 client, with a mock object to verify that the correct methods are called.

#3about 8 minutes

Mocking the backend service for client-agnostic tests

Instead of mocking the client library, you can intercept and mock the HTTP requests it makes to the backend service, like DynamoDB.

#4about 3 minutes

The brittleness of mocking SQL statements directly

Asserting on exact SQL strings is a fragile approach because minor refactoring, like adding parameters, will break the tests.

#5about 6 minutes

Testing against a real, persistent database service

Using a shared development or staging database provides a realistic environment but introduces significant challenges with state management and cleanup.

#6about 7 minutes

Using temporary services with Testcontainers for reliable tests

Testcontainers allows you to programmatically spin up ephemeral database instances in Docker, enabling realistic and isolated roundtrip testing.

#7about 4 minutes

Comparing the pros and cons of each testing method

A final summary compares the speed, complexity, and implementation coupling of client mocking, service mocking, and testing against real or temporary services.

#8about 15 minutes

Q&A on testing strategies and CI/CD integration

The Q&A covers choosing mocking frameworks, balancing unit and integration tests, handling data migrations, and integrating repository tests into CI/CD pipelines.

Related jobs
Jobs that call for the skills explored in this talk.

Featured Partners

From learning to earning

Jobs that call for the skills explored in this talk.

AWS DevOps / Python

RED Global
Charing Cross, United Kingdom

51K
DevOps
Python
Kubernetes
Amazon Web Services (AWS)