how to mock DBs

This page summarizes the projects mentioned and recommended in the original post on /r/golang

Our great sponsors
  • InfluxDB - Collect and Analyze Billions of Data Points in Real Time
  • SonarLint - Clean code begins in your IDE with SonarLint
  • Mergify - Updating dependencies is time-consuming.
  • dockertest

    Write better integration tests! Dockertest helps you boot up ephermal docker images for your Go tests with minimal work.

    This one looks cool!, I'll need to take a look to the documentation just to see if it satisfies our needs. I have been using an alternative library that seems to be more stable: I like it a lot and it has some good and complete documentation with examples included. Do you have any previous experience with this one or any other benchmark against testcontainers?

  • gomock

    GoMock is a mocking framework for the Go programming language. (by golang)

    In all other layers, my repositories are mocked using

  • InfluxDB

    Collect and Analyze Billions of Data Points in Real Time. Manage all types of time series data in a single, purpose-built database. Run at any scale in any environment in the cloud, on-premises, or at the edge.

  • Testify

    A toolkit with common assertions and mocks that plays nicely with the standard library

    I usually use the testify ( It can help you to mock your external components. For unit tests I see one way and it is not to allow external interaction (DBs, APIs, etc) while tests are going. Keep your project structure like the clean architecture ( and then, as a result, you will have opportunity to replace components and configure their behavior.

  • go

    The Go programming language

    Another approach if you want to stay at the DB level is to implement the Io/fs interface ( It is currently only read-only but you can extend it with a write mode in your project (see

  • postgres

    Docker Official Image packaging for Postgres (by docker-library)

    The docker file I used is basically this one except as I mention I hack out the VOLUME line, which makes it transient.

  • testcontainers-node

    Testcontainers is a NodeJS library that supports tests, providing lightweight, throwaway instances of common databases, Selenium web browsers, or anything else that can run in a Docker container.

    I have used only testcontainers. I used it for the first time while working with Java, and then with NodeJS. When I came to know that a Golang version is available, I ended up using it since I'm now familiar with the framework irrespective of the language.

  • redismock

    Redis client Mock

    I used also other lib to mock different components like redis cache.

  • SonarLint

    Clean code begins in your IDE with SonarLint. Up your coding game and discover issues early. SonarLint is a free plugin that helps you find & fix bugs and security issues from the moment you start writing code. Install from your favorite IDE marketplace today.

  • moq

    Interface mocking tool for go generate (by matryer)

    Just replaced mockery generated mocks with Alot cleaner imo at least for me

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts