Overview
endpoint のテストをするときに httpserver でサーバーを立ち上げて request と response の検証をする、ということをするときに、httptest で立ち上げるサーバーに割り当てられる port はランダムに決まります。
ただ、テストによっては port を固定したい時もあるので、固定する方法を実装してみました。
port を固定する方法
func TestServer(t *testing.T) { listener, err := net.Listen("tcp", "127.0.0.1:9999") if err != nil { t.Fatal(err) } mux := http.NewServeMux() ts := httptest.NewUnstartedServer(mux) ts.Listener = listener ts.Start() t.Cleanup(func() { ts.Close() }) }
上記のような方法で固定できます。
固定できるというか、指定した Listener を httptest server で立ち上げた server で指定することでその port で TCP のやり取りをできるようになる、という感じです。
やってみると簡単でした。