如何使用testify / mock在golang中模拟数据库层

时间:2019-02-14 04:33:44

标签: go server mocking testify

我试图在服务器上运行单元测试,并使用“ 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”字段。

看起来这不是实现模拟的方法,请让我知道正确的测试方法。

1 个答案:

答案 0 :(得分:0)

您可以将所需的任何功能添加到模拟结构中。唯一的限制是它必须至少实现DbStore接口。如果您需要进行测试,则可以添加任何其他功能。