fre*_*man 3 unit-testing go mockito gomock
我们使用 gopkg.in/mgo.v2/bson 与 mongo 对话,它的 API 填充传递的结构而不是返回结果,例如:
func (p *Pipe) One(result interface{}) error {...
Run Code Online (Sandbox Code Playgroud)
当我想模拟/测试使用它的代码时,就会出现问题。我想模拟这个执行并以某种方式获得“结果”中的填充值。目前测试有:
query.EXPECT().One(gomock.Any())
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我没有获得任何值,我只是配置 gomock 来检查当我运行我的方法时是否必须调用 query.One 。我无法通过这样的结构
mystruct := MyStruct{}
query.EXPECT().One(&mystruct)
Run Code Online (Sandbox Code Playgroud)
因为测试代码中的 mystruct 和实际代码中的 mystruct 不同,验证模拟将失败(引用不同)。我正在寻找类似于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)
})
Run Code Online (Sandbox Code Playgroud)
参考:https: //github.com/golang/mock/pull/149
| 归档时间: |
|
| 查看次数: |
7739 次 |
| 最近记录: |