Unit Testing

最后更新于:2022-04-01 03:04:08

# Unit Testing Unit testing allows us to test a `http.HandlerFunc` directly withoutrunning any middleware, routers, or any other type of code that mightotherwise wrap the function. ~~~ package main import ( "fmt" "net/http" ) func HelloWorld(res http.ResponseWriter, req *http.Request) { fmt.Fprint(res, "Hello World") } func main() { http.HandleFunc("/", HelloWorld) http.ListenAndServe(":3000", nil) } ~~~ This is the test file. It should be placed in the same directory asyour application and name `main_test.go`. ~~~ package main import ( "net/http" "net/http/httptest" "testing" ) func Test_HelloWorld(t *testing.T) { req, err := http.NewRequest("GET", "http://example.com/foo", nil) if err != nil { t.Fatal(err) } res := httptest.NewRecorder() HelloWorld(res, req) exp := "Hello World" act := res.Body.String() if exp != act { t.Fatalf("Expected %s gog %s", exp, act) } } ~~~ ## Exercises 1. Change the output of `HelloWorld` to print a parameter and then test that the parameter is rendered. 1. Create a POST request and test that the request is properly handled.
';