目前,我正在尝试对用GO编写的mongoDB适配器进行单元测试。我使用mongo-driver的mtest包。
我成功地处理了Update、Find等操作,但很难为CountDocuments创建一个有效的模拟响应。
我尝试了不同的响应,但总是得到invalid response from server, no 'n' field"
我也找不到任何关于这方面的好文件。
func Test_Case(t *testing.T) {
//DbInit before
...
mt := mtest.New(t, mtest.NewOptions().ClientType(mtest.Mock))
defer mt.Close()
mt.Run(mt.Name(), func(mt *mtest.T) {
itemId := "item-id-to-count"
mt.AddMockResponses(mtest.CreateCursorResponse(1, "foo.bar", mtest.FirstBatch, bson.D{
{Key: "n", Value: bson.D{{Key: "Key", Value: "123"}}},
}))
memberCount, err := dbCollection.CountDocuments(context.TODO(), bson.M{"_id": itemId}
if err != nil {
mt.Error("did not expect an error, got: ", err)
}
...
})
}
有谁能告诉我mtest.CreateCursorResponse(1,"...)应该是什么样子才能让它工作吗
1条答案
按热度按时间yhxst69z1#
您可以执行以下操作来运行mtest for
CountDocuments
函数的测试:假设有一个仓库,如下所示:
然后,您可以使用
mtest
包执行单元测试,如下所示: