我在Golang中使用Gorilla Mux实现了一个rest API。此API从MongoDb GridFs上传/下载文件。我想为我的API编写集成测试。
Go中是否有embedded MongoDb
包含GridFs support
的包裹?我们如何使用GridF测试API?我们需要针对真正的MongoDB进行测试吗?
Java似乎有这样的library
作为测试的一部分,我想启动嵌入式MongoDB并在测试结束时停止它。
答案 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中的空闲开放端口)。