Our great sponsors
-
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: https://github.com/ory/dockertest. 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?
-
In all other layers, my repositories are mocked using https://github.com/golang/mock
-
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.
-
I usually use the testify (https://github.com/stretchr/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 (https://betterprogramming.pub/the-clean-architecture-beginners-guide-e4b7058c1165) and then, as a result, you will have opportunity to replace components and configure their behavior.
-
Another approach if you want to stay at the DB level is to implement the Io/fs interface (https://pkg.go.dev/io/fs). It is currently only read-only but you can extend it with a write mode in your project (see https://github.com/golang/go/issues/45757).
-
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.
-
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.
-
Just replaced mockery generated mocks with https://github.com/matryer/moq Alot cleaner imo at least for me