unit-testing - 是否可以选择使用类似于 mockito argument captor 的东西?

标签 unit-testing go mockito gomock

我们使用 gopkg.in/mgo.v2/bson 与 mongo 对话,它的 API 填充传递的结构而不是返回结果,例如:

func (p *Pipe) One(result interface{}) error {...

当我想模拟/测试使用它的代码时会出现问题。我既想模拟这个执行,又想以某种方式在“结果”中获得 pupulated 值。 目前测试有:

query.EXPECT().One(gomock.Any())

如您所见,我没有获得任何值,我只是配置 gomock 来检查当我运行我的方法然后查询时。必须调用一个。 我不能传递像

这样的结构
mystruct := MyStruct{}
query.EXPECT().One(&mystruct)

因为测试代码和真实代码中的 mystruct 不同,验证 mock 将失败(引用不同)。我正在寻找类似于 mockito 的参数捕获器的东西: https://static.javadoc.io/org.mockito/mockito-core/2.6.9/org/mockito/ArgumentCaptor.html

最佳答案

这可以通过 Do 实现.

poy 复制和粘贴 Github 示例.

var capturedArgs []int

someMock.
  EXPECT().
  SomeMethod(gomock.Any()).
  Do(func(arg int){
    capturedArgs = append(capturedArgs, arg)
  })

引用:https://github.com/golang/mock/pull/149

关于unit-testing - 是否可以选择使用类似于 mockito argument captor 的东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48661794/

相关文章:

go - 我应该使用 channel 还是 sync.Mutex lock()?

go - Websocket 打开的文件太多

java - 使用 Mockito 从数据库模拟 CLOB

java - 在 SOAPUI 中用什么替换 XML 响应断言的正则表达式?

c# - 如何将 AutoFac 连接到 Common.Logging?

python - 有没有办法在 TestCase 之外使用 Python 单元测试断言?

go - Negroni 特定于路由的中间件

java - 模拟回调

android - MVP kotlin 中的 Mockito 测试 - 但是,与此模拟异常恰好有 1 次交互

java - 测试Java方法输出的 "right"方式是什么?