我有一个Printer使用标准 goPrintf函数签名的接口:
type Printer interface {
Printf(format string, tokens ...interface{})
}
Run Code Online (Sandbox Code Playgroud)
我希望能够使用gomock模拟此接口,但我不确定如何tokens ...interface{}正确设置参数。
我预计这Printf(gomock.Any(), gomock.Any())将涵盖所有潜在情况(因为tokens编译为[]interface{}),但似乎您需要为 N 个令牌设置显式调用:
// no tokens
mockPrinter.EXPECT().
Printf(gomock.Any()).
AnyTimes()
// 1 token
mockPrinter.EXPECT().
Printf(gomock.Any(), gomock.Any()).
AnyTimes()
// 2 tokens
mockPrinter.EXPECT().
Printf(gomock.Any(), gomock.Any(), gomock.Any()).
AnyTimes()
// ... up to N tokens
Run Code Online (Sandbox Code Playgroud)
有谁知道更好的方法来做到这一点?