/dockertest

testing tool to run docker container for each test

Primary LanguageGo

dockertest

Build Status codecov

dockertest is golang test tool to launch docker container every test running.

Quickstart

go get github.com/abema/dockertest

Run docker in your tests

import (
  "github.com/abema/dockertest"
  "gopkg.in/redis.v3"
)

func TestFoo(t *testing.T) {

  c := dockertest.Run("redis")
  defer c.Close()

  addr := c.Addr(6379)
  client := redis.NewClient(&redis.Options{Addr: addr})
  ...

}

Run docker for package tests

import "github.com/abema/dockertest"

func TestMain(m *testing.M) {
  os.Exit(testRun(m))
}

func testRun(m *testing.M) {

  c := dockertest.Run("redis")
  defer c.Close()
  os.Setenv("REDIS_ADDR", c.Addr(6379)

  c = dockertest.Run("mongodb")
  defer c.Close()
  os.Setenv("MONGODB_URL", "mongodb://" + c.Addr(27017))

  return m.Run()
}

Wait until container network ports

Waiting until port opened.

c := dockertest.Run("redis")
c.WaitPort(6379, 5 * time.Second)
addr := c.Addr(6379)

Waiting until HTTP returns valid status code(200-299).

c := dockertest.Run("redis")
c.WaitHTTP(6379, "/", 5 * time.Second)
addr := c.Addr(6379)