По какой-то причине я не могу получить ioutil.ReadAll(res.Body)
, где res
- это *http.Response
, возвращаемое res, err := hc.Do(redirectRequest)
(для hc http.Client
, redirectRequest *http.Request
).
Стратегия тестирования до настоящего времени
В любое время Я вижу hc.Do
или http.Request
в SUT, мой инстинкт состоит в том, чтобы раскрутитьфальшивый сервер и укажите ему соответствующие состояния приложений.Такой сервер для этого теста выглядит следующим образом:
badServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
// some stuff
w.Write([some bad bytes])
}))
defer badServer.Close()
Кажется, у меня нет способа контролировать res.Body
, что в буквальном смысле единственное, что удерживает меня от 100% завершения теста противфункция, в которой все это.
Я пытался в функции обработчика errorThrowingServer
установить r.Body
на заглушку io.ReadCloser
, которая выдает ошибку при вызове Read()
, но это нене влияет res
.