我刚学了go语言,然后用https://github.com/mongodb/mongo-go-driver为MongoDB和Golang的make rest API做了一个单元测试,但我在模拟Cursor MongoDB时卡住了,因为Cursor是一个结构体,是一个想法还是有人做的?
我刚学了go语言,然后用https://github.com/mongodb/mongo-go-driver为MongoDB和Golang的make rest API做了一个单元测试,但我在模拟Cursor MongoDB时卡住了,因为Cursor是一个结构体,是一个想法还是有人做的?
3条答案
按热度按时间64jmpszr1#
在我看来,模拟这类对象的最好方法是定义一个接口,因为在go中接口是隐式实现的,你的代码可能不需要那么多修改。一旦有了接口,就可以使用第三方库来自动生成模拟,比如mockery
关于如何创建接口的示例
只需将任何接收MongoDB游标的函数更改为使用自定义接口即可
bjg7j2ky2#
我刚刚遇到了这个问题。因为
mongo.Cursor
有一个内部字段保存[]byte
--Current
,所以为了完全模拟,需要 Packagemongo.Cursor
。以下是我为实现这一目标而创建的类型:不幸的是,这将是一个移动的目标。随着时间的推移,我将不得不向
MongoCollection
接口添加新功能。ej83mcc03#
您可以使用mongo驱动程序包中的NewCursorFromDocuments函数。
go.mongodb.org/mongo-driver/mongo"