Golang sudah menyediakan package khusus untuk membuat unit test terhadap fitur Web yang kita buat. Semuanya ada di dalam package net/http/httptest
https://pkg.go.dev/net/http/httptest
Dengan menggunakan package ini, kita bisa melakukan testing handler Web di Golang tanpa ahrus menajalankan aplikasi Web nya. Kita bisa fokus terhadap handler function yang ingin kita test.
httptest.NewRequest()
NewRequest(method, url, body)
merupakan function yang digunakan untuk membuat http.Request
. Kita bisa menentukan method, url dan body yang akan kita kirim sebagai simulasi unit test. Selain itu, kita juga bisa menambahkan informasi tambahan lainnya pada request yang ingin kita kirim, seperti header, cookie, dan lain-lain.
httptest.NewRecorder()
httptest.NewRecorder()
merupakan function yang digunakan untuk membuat ResponseRecorder. ResponseRecorder merupakan struct bantuan untuk merekam HTTP response dari hasil testing yang kita lakukan.
Kode program : HTTP Test
package belajar_golang_web
import (
"fmt"
"io"
"net/http"
"net/http/httptest"
"testing"
)
func HelloHandler(writer http.ResponseWriter, request *http.Request) {
fmt.Fprint(writer, "Hello World")
}
func TestHttp(t *testing.T) {
request := httptest.NewRequest(http.MethodGet, "http://localhost:8080/hello", nil)
recorder := httptest.NewRecorder()
HelloHandler(recorder, request)
response := recorder.Result()
body, _ := io.ReadAll(response.Body)
fmt.Println(string(body))
}

Pada baris kode diatas, pertama kita membuat function HelloHandler()
yang digunakan untuk menghanlde request dari client, kemudian pada baris ke 16 kita membuat request
baru dan di baris ke 17 kita membuat recorder
yang akan menampung hasil response dari handler kita. Selanjutnya kita hanya perlu menjalankan function nya dan menangkap hasil response nya. Terakhir kita konversi terlebih dahulu body nya ke string dan tampilkan ke layar terminal.
Dengan httptest kita tidak perlu menjalankan web server dan mengakses secara manual dari browser, kita hyanya perlu membuat unit test dan menjalan kan kode program kita di unit test tersebut.
Penutup
Pada artikel kali ini kita telah belajar tentang http test pada golang web. Dan pada artikel selanjutnya saya akan membahas query parameter pada golang web.