Подтвердить тело запроса, используя github.com/jarcoal/httpmock - PullRequest
0 голосов
/ 18 июня 2019

Функция, которую я пытаюсь протестировать, принимает структуры данных, формирует query_dsl, а затем выполняет /_search вызов упругого поиска с сформированным запросом. Поэтому я хочу заявить о том, что query_dsl и url формируются.

Я использую github.com/jarcoal/httpmock для проверки net/http запросов в моих модульных тестах. Согласно документу, он выставляет func GetCallCountInfo() map[string]int для проверки того, сколько раз была достигнута конкретная конечная точка. Но мне также интересно узнать, каким было тело запроса, когда был сделан этот вызов.

http.Client не выставляется, следовательно, не может переопределить / смоделировать это для тестирования.

Если использование этого пакета невозможно, то есть ли какая-либо другая библиотека, которая может имитировать сетевой запрос, а также удерживает тело запроса?

1 Ответ

0 голосов
/ 19 июня 2019

После предложения @georgeok, Мы можем создать макет http server и захватить тело запроса, когда запрос сделан. Ниже приведен фрагмент кода для создания сервера и хранения тела запроса.

server := httptest.NewServer(http.HandlerFunc(func(rw http.ResponseWriter, req *http.Request) {
        actualRequestBody, err = ioutil.ReadAll(req.Body)
        check(err)
        // Send mock response to be tested
        _, err := rw.Write(bytes)
        check(err)
    }))

    defer server.Close()

Теперь наше тело запроса хранится в переменной actualRequestBody, и мы можем утверждать это для корректности.

Единственное, что нужно, чтобы убедиться, что это работает, - это сделать вызов на хосте server.URL. Поскольку это раскручивает сервер по адресу, указанному в server.URL. Поэтому, если вызов из вашего кода выполняется на другой сервер, он не будет перехвачен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...