Golang MongoDb GridFs Тестирование
У меня есть API отдыха, реализованный с помощью Gorilla Mux в Golang. Этот API загружает / загружает файлы из MongoDb GridFs. Я хочу написать интеграционные тесты для моего API.
Есть ли embedded MongoDb
пакет с GridFs support
на ходу? Как мы тестируем API, используя GridFs? Нужно ли нам тестировать на реальном MongoDB?
У Java вроде бы такая библиотека
В рамках теста я хотел бы запустить встроенный MongoDB и остановить его в конце теста.
1 ответ
Насколько мне известно, встроенного MongoDB для Go нет.
Я использую собственный https://gopkg.in/mgo.v2/dbtest, который вы можете установить как обычно
go get -u "gopkg.in/mgo.v2/dbtest"
Хотя это требует mongod
внутри вашего $PATH dbtest позаботится обо всем остальном.
Вы получаете сервер с
package StackruTests
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-адрес или порт, которые предоставляются автоматически (используется свободный открытый порт в незарезервированном диапазоне localhost).