我试图在服务器上运行单元测试,并使用“ github.com/stretchr/testify/mock”模拟数据库层。将所有代码放在这里会使它非常混乱,因此我创建了一个小项目,该项目将给出我的代码结构以及我真正想要实现的“ https://github.com/utkarsh17ife/goMockPractice”的想法。 您可以提取此代码并运行“ go test。/ ...” (不确定在此处提供github链接是正确的做法,但我认为这样做会使事情变得更容易)
Server结构体具有一个类型为interface的db字段,因此,当我们创建普通服务器时,该db被分配给真实数据库,而在测试时它被分配给模拟数据库。但是问题是我无法在数据库上执行以下操作
srv.db.On("Insert", "some data").Return(true)
srv.db.AssertExpectations(t)
因为db接口没有“ On”和“ AssertExpectations”字段。
看起来这不是实现模拟的方法,请让我知道正确的测试方法。
答案 0 :(得分:0)
您可以将所需的任何功能添加到模拟结构中。唯一的限制是它必须至少实现DbStore
接口。如果您需要进行测试,则可以添加任何其他功能。