https://github.com/activecm/dbtest
Managed Integration Testing Dependencies via Docker for Go
https://github.com/activecm/dbtest
Last synced: 8 months ago
JSON representation
Managed Integration Testing Dependencies via Docker for Go
- Host: GitHub
- URL: https://github.com/activecm/dbtest
- Owner: activecm
- License: mit
- Created: 2018-06-06T02:22:11.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2018-12-06T21:09:47.000Z (over 7 years ago)
- Last Synced: 2025-01-12T14:46:13.227Z (over 1 year ago)
- Language: Go
- Size: 11.7 KB
- Stars: 1
- Watchers: 5
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# DBTest: Managed Integration Testing Dependencies via Docker for Go
### DBTest Allows You to Test Against a Real Database
Using the Docker API, your Go program can manage its own
testing dependencies.
This is especially useful when writing integration tests
(or when it's simply impossible to mock out a dependency).
## MongoDB
```go
//Create a new Loader. This may error is Docker is not accessible
l, err := docker.NewLoader()
//Create a new MongoDB container using the loader
mongo, err := NewMongoDBContainer(context.Background(), l)
//Obtain an mgo.Session to contact MongoDB
ssn, err := mongo.NewSession()
//Do something with the Session
err = ssn.Ping()
//Stop and remove the MongoDB container
err = l.StopService(context.Background(), mongo)
_ = err
```
## Arbitrary Ephemeral Docker Containers
```go
//Create a new Loader. This may error is Docker is not accessible
loader, err := docker.NewLoader()
helloWorldSpec := docker.ServiceSpecification{
FullyQualifiedImageName: "library/hello-world",
ContainerConfig: &container.Config{
Image: "hello-world",
},
}
service, err := loader.StartService(context.Background(), &helloWorldSpec)
//no StopService call since "hello-world" exits on its own
_ = err
```
## Docker API Version
The Go Docker API is notoriously hard to vendor due to the Moby rename.
This API is based off of commit `21291e5aefe1f13f3208d57bcc4183848c492bd1`
on Moby/Moby which was committed to master on June 6th, 2018.