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