Herkese merhaba!

Uzun yıllardır bol miktarda kişisel zaman ve enerji harcayarak bilgimizi hepinizle paylaşıyoruz. Ancak şu andan itibaren bu blogu çalışır durumda tutabilmek için yardımınıza ihtiyacımız var. Yapmanız gereken tek şey, sitedeki reklamlardan birine tıklamak olacaktır, aksi takdirde hosting vb. masraflar nedeniyle maalesef yayından kaldırılacaktır. Teşekkürler.

Bu örnek bize mevcut olmayan bir adres/yönlendirici ve HTTP sunucusunu Golang ile taklit etmeyi gösterecek. Teknik olarak testi, asıl kodu yazmadan önce yazıyorsunuz.


Test


package main

import (
"fmt"
"io/ioutil"
"log"
"net/http"
"net/http/httptest"
"testing"
)

func Test_users(t *testing.T) {
srv := serverMock()
defer srv.Close()

req, err := http.NewRequest(http.MethodGet, fmt.Sprintf("%s/api/v1/users", srv.URL), nil)
if err != nil {
t.Error(err)
}

res, err := http.DefaultClient.Do(req)
if err != nil {
t.Error(err)
}
defer res.Body.Close()

body, err := ioutil.ReadAll(res.Body)
if err != nil {
log.Fatal(err)
}

if http.StatusOK != res.StatusCode {
t.Error("expected", http.StatusOK, "got", res.StatusCode)
}
if "Hello" != string(body) {
t.Error("expected Hello got", string(body))
}
}

func serverMock() *httptest.Server {
handler := http.NewServeMux()
handler.HandleFunc("/api/v1/users", usersMock)

srv := httptest.NewServer(handler)

return srv
}

func usersMock(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Hello"))
}