Сбой модульного теста для следующего кода:
Это мой основной код:
package locprovider
import (
"encoding/json"
"fmt"
"net/http"
"api/domain/location"
"api/utils/error"
"github.com/mercadolibre/golang-restclient/rest"
)
const (
getCountryUrl = "https://api.mercadolibre.com/countries/%s"
)
func GetCountry(countryId string) (*location.Country, *error.ApiError) {
response := rest.Get(fmt.Sprintf(getCountryUrl, countryId))
if response == nil || response.Response == nil {
return nil, &error.ApiError {
Status: http.StatusInternalServerError,
Message: fmt.Sprintf("invalid restclient response when trying to get country %s", countryId),
}
}
if response.StatusCode > 299 {
var apiError error.ApiError
if err := json.Unmarshal(response.Bytes(), &apiError); err != nil {
return nil, &error.ApiError {
Status: http.StatusInternalServerError,
Message: fmt.Sprintf("invalid error response when getting country %s", countryId),
}
}
return nil, &apiError
}
var result location.Country
if err := json.Unmarshal(response.Bytes(), &result); err != nil {
return nil, &error.ApiError {
Status: http.StatusInternalServerError,
Message: fmt.Sprintf("error when trying to unmarshal country data for %s", countryId),
}
}
return &result, nil
}
Это код моего модульного теста:
package locprovider
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestGetCountryRestClientError(t *testing.T) {
// Execution:
country, err := GetCountry("AR")
// Validation:
assert.Nil(t, country)
assert.NotNil(t, err)
assert.EqualValues(t, 500, err.Status)
assert.EqualValues(t, "invalid restclient response when trying to get country AR", err.Message)
}
Когда я выполнить этот модульный тест, я сталкиваюсь с следующей ошибкой, и я не уверен, почему это происходит.
У меня есть несколько других модульных тестов из другого пакета go, и они прекрасно работают без этой ошибки.
GOROOT = / usr / local / Cellar / go / 1.13.3 / libexe c #gosetup GOPATH = / Users / abc / go -testing #gosetup / usr / local / Cellar /go/1.13.3/libexec/bin/go test - c -o / private / var / folder / r0 / f7kkkm9526lgfz6jtgtphyww0000gn / T / ___ TestGetCountryRestClientError_in_api_provider_locprovider local_locer / usp gopeserp / /1.13.3/libexec/bin/go инструмент test2 json -t / private / var / folder / r0 / f7kkkm9526lgfz6jtgtphyww0000gn / T / ___ TestGetCountryRestClientError_in_api_provider_locprovider -tryt_tint_setup_setup_set_set_set_set_set_set_set_set_set_set_set_set_set_set_set_set_W_W_W_R_W_W_R_0_ru_g_ru_ru_ru_tr_t_0_ru определение: -test.v Использование / private / var / folder / r0 / f7kkkm9526lgfz6jtgtphyww0000gn / T / ___ TestGetCountryRestClientError_in_api_provider_locprovider: -mock Используйте флаг «mock», чтобы указать, что пакет должен использовать mock. Процесс завершен с кодом выхода 1