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).

Другие вопросы по тегам