web-dev-qa-db-ja.com

GolangでのAPIテスト

Golangにはユニットテストの実行を可能にする テストパッケージ があることを知っています。これは、単体テスト用にGolang関数を内部的に呼び出す場合にうまく機能するようですが、一部の人々はそれを APIテスト にも適合させようとしていたようです。

Node.jsのMochaとChaiアサーションライブラリのような自動テストフレームワークの優れた柔軟性を考えると、Golangのテストパッケージを他の何かと比較して使用することは、どのような種類のテストに意味がありますか?

ありがとう。

12
Spikey

@ 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
}
2
daplho

ダミーリクエストを行うには、まずルーターを初期化してからサーバーを設定し、その後リクエストを行う必要があります。従うべきステップ:

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)
1
Nikta Jn