stretchr/testify

mock returns panic when API uses context

Open

#519 aberto em 14 de nov. de 2017

Ver no GitHub
 (15 comments) (4 reactions) (0 assignees)Go (1.704 forks)batch import
help wantedpkg-mock

Métricas do repositório

Stars
 (25.958 stars)
Métricas de merge de PR
 (Mesclagem média 6d 15h) (2 fundiu PRs em 30d)

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)

Guia do colaborador