testfixtures
dbcleaner
Our great sponsors
testfixtures | dbcleaner | |
---|---|---|
4 | 1 | |
1,046 | 157 | |
2.8% | - | |
6.3 | 1.8 | |
9 days ago | over 2 years ago | |
Go | Go | |
MIT License | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
testfixtures
-
How to mock database calls
I'm the author of https://github.com/go-testfixtures/testfixtures, a library written to make it easier to write tests with a real database and test data. You might want to use it together with docker-compose, for example.
-
Integration tests with Go and testcontainers
To solve the problem we will use testfixtures. Create a folders fixtures и fixtures/storage and put a file users.yaml inside:
-
Mocking database or use a test database
A lot of good suggestions here, I would also take a look at go-testfixtures which allows you to create some simple yaml-based fixture data to use with unit testing. It's quick and easy, but yes can get unwieldy the more you add.
-
Ask HN: What are some tools / libraries you built yourself?
I built an alternative to Make written in Go that is simpler to use and cross-platform: https://taskfile.dev/
Also, a library to write tests with databases for Go: https://github.com/go-testfixtures/testfixtures
dbcleaner
-
The Big Unit Test Misunderstanding
It is not hard to isolate and stub a database the problem is you will not catch a lot of errors, e.g. writing a 40 char string into a VCHAR(10), DateTime conversations, ...
In Ruby on Rails it is quite common to use a real database in the unit tests. Even before containers came out and it is still fast (yes, less than 1 second).
In rails you use the same database instance for all the tests, so you do not have spin up a database instance for every case. Instead you use a database cleaner.
There also exists a JS implementation: https://github.com/khaiql/dbcleaner
What are some alternatives?
go-vcr - Record and replay your HTTP interactions for fast, deterministic and accurate tests
go-carpet - Tool for show test coverage in terminal for Go source files
Hamcrest - Hamcrest matchers for the Go programming language
bro - bro watch files in directory and run tests for them
ginkgo - A Modern Testing Framework for Go
Gauge - Light weight cross-platform test automation
GoSpec - Testing framework for Go. Allows writing self-documenting tests/specifications, and executes them concurrently and safely isolated. [UNMAINTAINED]
goblin - Minimal and Beautiful Go testing framework
assert - :exclamation:Basic Assertion Library used along side native go testing, with building blocks for custom assertions
goc - A Comprehensive Coverage Testing System for The Go Programming Language