mock icon indicating copy to clipboard operation
mock copied to clipboard

Support variadic pointer parameter on caller.SetArg

Open rahmatismail opened this issue 7 years ago • 3 comments

gomock caller.SetArg recognizes variadic pointer parameter as a single param

Code example

func (p *pkg) VariadicInterface(data ...interface{}) {
	for i := range data {
		data[i] = i
	}
}
func (p *pkg) VariadicInt(data ...*int) {
	for i := range data {
		*data[i] = i
	}
}

// Usage
var a, b, c, d int
pkgReal.VariadicInterface(&a, &b)
pkgReal.VariadicInt(&c, &d)

Expect function on Test

mockPkg.EXPECT().VariadicInterface(gomock.Any(), gomock.Any()).SetArg(0, 5).SetArg(1, 5)
mockPkg.EXPECT().VariadicInt(gomock.Any(), gomock.Any()).SetArg(0, 5).SetArg(1, 5)

Output

SetArg(1, ...) called for a method with 1 args

Expected behaviour

Test passed with a, b, c, and d match given value

Please correct me if I use it wrong.

rahmatismail avatar Apr 15 '18 09:04 rahmatismail

Sorry, I did not notice this // TODO: This will break on variadic methods.

rahmatismail avatar Apr 15 '18 09:04 rahmatismail

+1 on this

leoq-ardanlabs avatar Oct 11 '21 18:10 leoq-ardanlabs

I've needed a similar functionality and made a change that seems to match this issue

konradzapalowicz avatar Oct 15 '21 22:10 konradzapalowicz