【发布时间】:2019-02-14 04:33:44
【问题描述】:
我正在尝试在服务器上运行单元测试,并使用“github.com/stretchr/testify/mock”来模拟数据库层。把所有的代码放在这里会很乱,所以我创建了一个小项目,它会给出我的代码结构的想法以及我真正想要实现的“https://github.com/utkarsh17ife/goMockPractice”。 您可以提取此代码并运行“go test ./...” (不确定在这里提供 github 链接是否正确,但我觉得这会让事情变得更容易)
Server struct 有一个字段 db 是 interface 类型的,所以当我们创建一个普通的服务器时,db 被分配给真正的数据库,但在测试时它被分配给 mock 数据库。但问题是我无法在 db 上执行以下操作
srv.db.On("Insert", "some data").Return(true)
srv.db.AssertExpectations(t)
由于 db 接口没有“On”和“AssertExpectations”字段。
看起来这不是实现模拟的方法,请告诉我正确的测试方法。
【问题讨论】:
-
您可以考虑使用已经为模拟数据库构建的库,例如go-sqlmock。