request, err := http.NewRequest("GET", path, nil)
response := httptest.NewRecorder()
r.ServeHTTP(response, request)
var raw map[string]map[string]string
_ = json.Unmarshal(response.Body.Bytes(), &raw)
details := raw["response"]
У меня есть TestFunction, в которой я использую этот код.Это код для тестирования REST API для запроса GET.
В моем первом тестовом примере я нажимаю на определенный обработчик, а во втором тестовом случае я бью некоторый случайный обработчик, чтобы сбить этот случай.
Код передается, но каждый развторой тестовый пример дает 500 в качестве ответа.
Ниже приведен код моего тестового примера.
func TestGetProviders(t *testing.T) {
type args struct {
path string
handler gin.HandlerFunc
}
tests := []struct {
name string
args args
want bool
}{
{
"First",
args{
"/api/v1/providers",
GetProviders,
},
true,
},
{
"Second",
args{
"/demo",
TheFunc,
},
false,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
value := copyCodeGet(tt.args.path, tt.args.handler)
if len(value["response"]) > 0 {
statusCode, _ := strconv.Atoi(value["response"]["code"])
if val := statusCode == config.SuccessCode && value["response"]["message"] == config.SuccessMsg; val != tt.want {
t.Errorf("Error is:%v && Status code should be %v, was %d.", value, http.StatusOK, statusCode)
}
}
})
}
}