Нет встроенного MongoDB для Go, насколько я знаю.
Что я делаю, чтобы использовать собственный gopkg.in/mgo.v2/dbtest, которые вы можете установить, как обычно, с
go get -u "gopkg.in/mgo.v2/dbtest"
Хотя это требует mongod
внутри вашей $ PATH, то DBTEST заботится ГГО о всех остальных.
Вы получаете сервер с
package StackOverflowTests
import (
"io/ioutil"
"os"
"testing"
"gopkg.in/mgo.v2/dbtest"
)
func TestFoo(t *testing.T) {
d, _ := ioutil.TempDir(os.TempDir(), "mongotools-test")
server := dbtest.DBServer{}
server.SetPath(d)
// Note that the server will be started automagically
session := server.Session()
// Insert data programmatically as needed
setupDatabaseAndCollections(session)
// Do your testing stuff
foo.Bar(session)
// Whatever tests you do
// We can not use "defer session.Close()" because...
session.Close()
// ... "server.Wipe()" will panic if there are still connections open
// for example because you did a .Copy() on the
// original session in your code. VERY useful!
server.Wipe()
// Tear down the server
server.Stop()
}
Обратите внимание, что вы ни должны определить IP-адрес или порт, в котором предусмотрены автомагически (бесплатный открытый порт в незарезервированный диапазоне локального хоста используется).
Кажется, что проблема связана с импортом 'gopkg.in/mgo.v2/dbtest'. Когда мы запускаем тесты, это происходит с ошибкой 'gopkg.in/tomb.v2: нет встроенных исходных файлов Go в ошибке. Мне пришлось запустить 'go get gopkg.in/tomb.v2', чтобы решить эту проблему. –