Наша цель - иметь хорошие интеграционные тесты на нашем API, поэтому мы используем возможности маршрутизатора gin вместе с httptest.NewRecorder () для настройки фиктивной конечной точки процесса, к которой мы можем симулировать вызовы http. Это гарантирует, что мы тестируем фактические привязки пути, промежуточное программное обеспечение и т. Д. c.
Наша проблема связана со встроенными go отчетами о покрытии *1019* из: go test -coverprofile = охват. TXT. / ... Он не регистрирует хиты против API. Полный сценарий, который мы используем для получения покрытия и загрузки на codecov.io, выглядит примерно так: https://github.com/codecov/example-go Мы собираем oop в go пакет и собираем покрытие. Txt.
Кто-нибудь испытывал это? Как мы исправим? Предполагается ли, что косвенный характер вызова кода через смоделированные http-запросы вызывает этот пробел?
Как воспроизвести:
http := gin.New()
api := http.Group("/api")
api.GET("/", apis.WelcomeHandler)
et c ...
func PerformRequest(r http.Handler, method, path string, headers map[string]string, jsonPost string) *httptest.ResponseRecorder {
var payload io.Reader
if len(jsonPost) > 0 {
payload = bytes.NewBufferString(jsonPost)
}
req, err := http.NewRequest(method, path, payload)
if err != nil {
fmt.Printf("Problem sending http request, %e", err)
return nil
}
if headers != nil && len(headers) > 0 {
for k, v := range headers {
req.Header.Add(k, v)
}
}
if len(jsonPost) > 0 {
req.Header.Set("Content-Type", "application/json") // This makes it work
}
w := httptest.NewRecorder()
r.ServeHTTP(w, req)
return w
}
Среда MacOS X go версия go1.13.4 darwin / amd64