Golangにはユニットテストの実行を可能にする テストパッケージ があることを知っています。これは、単体テスト用にGolang関数を内部的に呼び出す場合にうまく機能するようですが、一部の人々はそれを APIテスト にも適合させようとしていたようです。
Node.jsのMochaとChaiアサーションライブラリのような自動テストフレームワークの優れた柔軟性を考えると、Golangのテストパッケージを他の何かと比較して使用することは、どのような種類のテストに意味がありますか?
ありがとう。
@ eduncan911のコメントに同意します。具体的には、ハンドラーが
http.ResponseWriter
適切なリクエストに加えてパラメータとして。その時点で、新しいリクエストを宣言するように設定されます。
req, err := http.NewRequest("GET", "http://example.com", nil)
新しいhttptestレコーダー:
recorder := httptest.NewRecorder()
次に、ハンドラーに新しいテスト要求を発行します。
yourHandler(recorder, req)
最終的にエラーなどをチェックできるようにします。レコーダーで:
if recorder.Code != 200 {
//do something
}
ダミーリクエストを行うには、まずルーターを初期化してからサーバーを設定し、その後リクエストを行う必要があります。従うべきステップ:
1. router := mux.NewRouter() //initialise the router
2. testServer := httptest.NewServer(router) //setup the testing server
3. request,error := http.NewRequest("METHOD","URL",Body)
4. // We create a ResponseRecorder (which satisfies http.ResponseWriter) to record the response.
resp := httptest.NewRecorder()
5. handler := http.HandlerFunc(functionname)
// Our handlers satisfy http.Handler, so we can call their ServeHTTP method
// directly and pass in our Request and ResponseRecorder.
handler.ServeHTTP(resp, req)