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