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.

test

Milly
Vienna, Austria

Intermediate

test

Milly
Vienna, Austria

Intermediate

Featured Partners

Related Articles

View all articles
Dev Digest 113 - Debugging above the cloud
Hello there and welcome to Dev Digest 113! This time, we got an old friend in the sky back, jQuery asks us to upgrade and AI is eating the web. Also, are you sure the LLM you use is secure against code injection?News and ArticlesGood news everyone! N...
Dev Digest 113 - Debugging above the cloud
CH
Chris Heilmann
Dev Digest 125 - Duck and Cover
This issue was written live at the WeAreDevelopers World Congress in Berlin with us being incredibly busy, but this shouldn't mean you don't get some hot resources. News and ArticlesLet's start with AI news: Google and Microsoft consume more power th...
Dev Digest 125 - Duck and Cover
CH
Chris Heilmann
Dev Digest 134 - Where pixels sing?
News and ArticlesWeAreDevelopers LIVE Data and Security Day is on Wednesday, 25/09/2024. Learn about OPC UA Updates, Best Practices for Using GitHub Secrets, Passwordless Web 1.5, Emerging AI Security Risks, Data Privacy in LLMs and get a chance to t...
Dev Digest 134 - Where pixels sing?

From learning to earning

Jobs that call for the skills explored in this talk.

Test Engineer

Test Engineer

Acrolinx
Berlin, Germany

Senior
Java
Linux
Maven
PostgreSQL
Manual Testing
+2