Модульное тестирование с Go-Chi/Chi
Я пытаюсь написать модульные тесты для моих конечных точек отдыха, используя Go-Chi в качестве мультиплексора.
Ранее я использовал gorilla/mux, но перешел на Chi, потому что его легче поддерживать по мере роста моего приложения.
С Gorilla / mux я смог использовать "ServeHTTP" для отправки тестового запроса, но, используя go-chi/chi, похоже, он не делает то же самое.
var writer *httptest.ResponseRecorder
var r = chi.Mux{}
func TestMain(m *testing.M) {
setUp()
code := m.Run()
os.Exit(code)
}
func setUp() {
d, _ := database.ConnectToDB(database.TESTDBNAME)
writer = httptest.NewRecorder()
r := chi.NewMux()
r.Route("/companies", func(r chi.Router) {
r.Get("/", GetCompanies(d))
r.Get("/{id}", GetCompany(d))
r.Post("/", PostCompany(d))
r.Put("/{id}", PutCompany(d))
r.Delete("/{id}", DeleteCompany(d))
})
}
func TestPostCompany(t *testing.T) {
tables := []struct {
company model.Company
result int
}{
{model.Company{Name:"Test"}, 200},
}
for _, table := range tables {
company, err := json.Marshal(table.company)
if err != nil {
t.Errorf("JSON Error")
}
companyJson := strings.NewReader(string(company))
request, err := http.NewRequest("POST", "/companies", companyJson)
if err != nil {
t.Error(err)
}
r.ServeHTTP(writer, request)
if writer.Code != table.result {
t.Error(writer.Body)
}
}
}
Прямо сейчас тест показывает ошибку 404, но я хотел бы, чтобы она выдавала ошибку 200. Этот запрос отлично работает при запуске моего приложения и тестировании вручную.
Я считаю, что проблема имеет отношение к "ServeHTTP". Может быть, это работает по-другому с ци. Кто-нибудь знает, как успешно запустить этот тест?