test 🧪
Testing with using real servers and databases with test containers.
go get github.com/worldline-go/test
| Env |
Default Image |
| TEST_IMAGE_POSTGRES |
docker.io/postgres:13.15-alpine |
| TEST_IMAGE_REDIS |
docker.dragonflydb.io/dragonflydb/dragonfly:v1.27.1 |
| TEST_IMAGE_KAFKA |
docker.io/bitnamilegacy/kafka:3.8.1 |
For label to test containers start with TEST_LABEL_ prefix, the rest of the env variable name will be used as label key. For example:
| Env |
Label Key |
| TEST_LABEL_CI_JOB_ID |
ci.job.id |
| TEST_LABEL_CI_PROJECT_ID |
ci.project.id |
PostgreSQL
Need to have a running PostgreSQL database to run the tests. To do that run it in the package level test main function.
package container_test
import (
"testing"
"github.com/stretchr/testify/require"
"github.com/stretchr/testify/suite"
"github.com/worldline-go/test/container/containerpostgres"
)
type DatabaseSuite struct {
suite.Suite
container *containerpostgres.Container
}
func (s *DatabaseSuite) SetupSuite() {
s.container = containerpostgres.New(s.T())
}
func TestDatabase(t *testing.T) {
suite.Run(t, new(DatabaseSuite))
}
func (s *DatabaseSuite) TearDownSuite() {
s.container.Stop(s.T())
}
func (s *DatabaseSuite) SetupTest() {
s.container.ExecuteFiles(s.T(), []string{"testdata/init.sql"})
}
func (s *DatabaseSuite) TestAddEvents() {
// Test event
}