stretchr/testify

mock returns panic when API uses context

Open

#519 opened on Nov 14, 2017

View on GitHub
 (15 comments) (4 reactions) (0 assignees)Go (25,958 stars) (1,704 forks)batch import
help wantedpkg-mock

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)

Contributor guide