Golang MongoDb GridFs测试

时间:2015-11-29 05:08:00

标签: mongodb go mgo

我在Golang中使用Gorilla Mux实现了一个rest API。此API从MongoDb GridFs上传/下载文件。我想为我的API编写集成测试。
Go中是否有embedded MongoDb包含GridFs support的包裹?我们如何使用GridF测试API?我们需要针对真正的MongoDB进行测试吗?
Java似乎有这样的library

作为测试的一部分,我想启动嵌入式MongoDB并在测试结束时停止它。

1 个答案:

答案 0 :(得分:3)

据我所知,没有嵌入式MongoDB for Go。

我所做的就是使用mgo自己的gopkg.in/mgo.v2/dbtest,你可以像往常一样安装

go get -u "gopkg.in/mgo.v2/dbtest"

虽然在$ PATH中需要mongod,但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或端口(使用非保留范围的localhost中的空闲开放端口)。