小编Zac*_*ack的帖子

Golang:如何使用 gomock 模拟 ...interface{} 争论者

我有一个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)

有谁知道更好的方法来做到这一点?

printf mocking go gomock

5
推荐指数
1
解决办法
2683
查看次数

标签 统计

go ×1

gomock ×1

mocking ×1

printf ×1