【问题标题】:how to mock database layer in golang using testify/mock如何使用 testify/mock 在 golang 中模拟数据库层
【发布时间】: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

标签: go server mocking testify


【解决方案1】:

你可以在你的模拟结构中添加任何你想要的函数。唯一的限制是它必须至少实现DbStore 接口。如果您的测试需要,可以添加任何其他功能。

【讨论】:

  • 是的,我明白这一点,但是“On”和“AssertExpectations”已经存在于模拟包中,我需要使用它们而不是添加我自己的函数,这就是我觉得测试结构的原因我的设置是错误的,但不确定正确的方法是什么
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-14
  • 2016-11-04
相关资源
最近更新 更多