如何使用嘲笑来嘲笑httpclient

问题描述 投票:1回答:1

我正在尝试使用Mockery模拟Http客户端,但是当我尝试传递返回值时,出现错误消息type http.Response is not an expression

下面是我的界面和处理程序

type HTTPClient interface {
    Get(url string) (resp *http.Response, err error)
}

type Handler struct {
    httpClient   HTTPClient
}

Mockery生成了一个如下所示的模拟类

type HTTPClient struct {
    mock.Mock
}

// Get provides a mock function with given fields: url
func (_m *HTTPClient) Get(url string) (*http.Response, error) {
    ret := _m.Called(url)

    var r0 *http.Response
    if rf, ok := ret.Get(0).(func(string) *http.Response); ok {
        r0 = rf(url)
    } else {
        if ret.Get(0) != nil {
            r0 = ret.Get(0).(*http.Response)
        }
    }

    var r1 error
    if rf, ok := ret.Get(1).(func(string) error); ok {
        r1 = rf(url)
    } else {
        r1 = ret.Error(1)
    }

    return r0, r1
}

在我的测试中,我正在尝试模拟如下所示的httpclient

httpClient := &mocks.HTTPClient{}
httpClient.On("Get", request.SubscribeURL).Return(resp*http.Response, nil)

我不确定在Return中应该使用什么参数。我应该通过什么?

unit-testing go mockery
1个回答
0
投票

[http.Response(注意,它没有方括号,主要表示一种类型)是一个表达式,您应该返回实际响应(函数的返回值),因为函数会返回两个值*http.Response一个指针到http响应结构和err或nil

© www.soinside.com 2019 - 2024. All rights reserved.