Макет Go Echo контекста - PullRequest
       12

Макет Go Echo контекста

0 голосов
/ 23 сентября 2018

Я пытаюсь протестировать обработчик маршрута для эхо-кода Go.

Код выглядит следующим образом:

p := NewPoint(s.db)

// Update the deduction and exchange rate.
e := echo.New()

mapD := map[string]string{"exchange_cash": "5", "exchange_point": "7"}
mapB, _ := json.Marshal(mapD)
req := httptest.NewRequest(echo.POST, "http://localhost:1323/settings/update/exchange", bytes.NewReader(mapB))
//req := httptest.NewRequest(echo.POST, "/settings/update/exchange", bytes.NewReader(mapB))
rec := httptest.NewRecorder()
c := e.NewContext(req, rec)

u := p.UpdateDeductionRate(c)
assert.Equal(s.T(), "success", u)

И все же это выдает ошибку "Unsupported Media Type"

Для теста Get код выглядит как

req := httptest.NewRequest(echo.GET, "http://localhost:1323/admin/user_points/settings/get", nil)
//req := httptest.NewRequest(echo.GET, "/admin/user_points/settings/get", nil)
rec := httptest.NewRecorder()
c := e.NewContext(req, rec)
g := p.GetRates(c)
assert.Equal(s.T(), "success", g)

g - ноль.Похоже, хандер p.UpdateDeductionRate (c echo.Context), p.GetRates (c echo.Context) вообще не вызывается.

Мне кажется, что echo.Context не создан правильно.У кого-нибудь есть идея?Спасибо!

1 Ответ

0 голосов
/ 23 сентября 2018

Возможно, проблема в том, что вы передаете данные в кодировке json без указания заголовка Content-Type.

Добавьте req.Header.Set(echo.HeaderContentType, echo.MIMEApplicationJSON) к своему коду, и оно должно работать:

req := httptest.NewRequest(echo.GET, "http://localhost:1323/admin/user_points/settings/get", nil)
req.Header.Set(echo.HeaderContentType, echo.MIMEApplicationJSON)

rec := httptest.NewRecorder()

c := e.NewContext(req, rec)
g := p.GetRates(c)

assert.Equal(s.T(), "success", g)
...