This example illustrates how to apply declarative testing for a typical database application.
-
Prepare the database
Execute the SQLs in user.sql:
$ mysql -uroot -p -e 'source ./user.sql'
-
Implement the testee factory
See NewTestee().
-
Write the test specification
See dbtest.spec.yaml.
$ go generate
See store_test.go for generated tests.
$ go test -v -race
Result
=== RUN TestCreateUser
=== RUN TestCreateUser/new_user
=== RUN TestCreateUser/duplicate_user
--- PASS: TestCreateUser (0.05s)
--- PASS: TestCreateUser/new_user (0.01s)
--- PASS: TestCreateUser/duplicate_user (0.02s)
=== RUN TestGetUser
=== RUN TestGetUser/ok
=== RUN TestGetUser/not_found
--- PASS: TestGetUser (0.02s)
--- PASS: TestGetUser/ok (0.00s)
--- PASS: TestGetUser/not_found (0.01s)
=== RUN TestUpdateUser
=== RUN TestUpdateUser/ok
=== RUN TestUpdateUser/not_found
--- PASS: TestUpdateUser (0.04s)
--- PASS: TestUpdateUser/ok (0.02s)
--- PASS: TestUpdateUser/not_found (0.02s)
=== RUN TestDeleteUser
=== RUN TestDeleteUser/ok
=== RUN TestDeleteUser/not_found
--- PASS: TestDeleteUser (0.04s)
--- PASS: TestDeleteUser/ok (0.01s)
--- PASS: TestDeleteUser/not_found (0.02s)
PASS
ok github.com/RussellLuo/dbtest/examples 0.175s