Description
go test command returns below panic when we try to use mocks.On: Does testify/mock support context as a parameter.
it reports it is getting type as context.emptyContext
mockery generated API as below:
// SetSchema provides a mock function with given fields: ctx, in func (_m *MockUtils) SetSchema(ctx context.Context, in *models.Schema) (*models.Schema, error) { ret := _m.Called(ctx, in)
var r0 *models.Schema
if rf, ok := ret.Get(0).(func(context.Context, *models.Schema) *models.Schema); ok {
r0 = rf(ctx, in)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(*models.Schema)
}
}
var r1 error
if rf, ok := ret.Get(1).(func(context.Context, *models.Schema) error); ok {
r1 = rf(ctx, in)
} else {
r1 = ret.Error(1)
}
return r0, r1
}
I am using mocks.On as below:
func TestUtils(){ // ..... /// mclient.On("SetSchema", mock.AnythingOfType("context.Context"), mock.AnythingOfType("*models.Schema")).Return(schemaData) ctx := context.Background() s, _ := mockutils.SetSchema(ctx, schemaData) }
i see below panic from mock package. mock: Unexpected Method Call
SetSchema(*context.emptyCtx,*models.Schema) *0: (context.emptyCtx)(0xc420011058) 1: &models.Schema{ID:"", SchemaID:""}
The closest call I have is:
SetSchema(mock.AnythingOfTypeArgument,mock.AnythingOfTypeArgument) 0: "context.Context" 1: "*models.Schema"
goroutine 11 [running]: testing.tRunner.func1(0xc4200740d0) /usr/local/go/src/testing/testing.go:622 +0x29d panic(0x14ba5a0, 0xc4204c32b0) /usr/local/go/src/runtime/panic.go:489 +0x2cf vendor/github.com/stretchr/testify/mock.(*Mock).MethodCalled(0xc4202e24c0, 0x17ff0d6, 0x9, 0xc4204c5080, 0x2, 0x2, 0x7, 0x2, 0xc42003c960) /Users/saaitha/Documents/vendor/github.com/stretchr/testify/mock/mock.go:311 +0x6db vendor/github.com/stretchr/testify/mock.(*Mock).Called(0xc4202e24c0, 0xc4204c5080, 0x2, 0x2, 0x1, 0xc42003c9d8, 0x11eae6a)