This repo demonstrates how to write an easily-tested JSON web service in Go, with a PostgreSQL database. It's a companion to a blog post I wrote.
Tests in this project run against a local PostgreSQL server, and make real HTTP calls to ensure that it works from end-to-end.
Here's the gist of how tests work:
testsub-package contains shared test setup and helpers.
test.Envtype manages setting up and tearing down global test state, like the connection to PostgreSQL.
PostgreSQL is run locally (I use Postgres.app), and located via the
migratepackage is used to create a clean database before each test.
net/http/httptestpackage provides a test HTTP server that runs the API code.
Test requests are made using standard HTTP.
Dive in and look at the tests, or read the blog post for more detail.
Running the Tests
Tests are run via
go test, just like any other Go project. However, the tests require a PostgreSQL database. The database URL is passed in via the
DATABASE_URL environment variable, like this:
DATABASE_URL="postgres://username@localhost:5432/service_test?sslmode=disable" go test
I'd love to know if this helps you! I'm @nerdyc on Twitter.