【学習記録】Goのテストを書く

今日はバックエンドのテストを書いていました。
APIをコーディングする数が増えてくるとテストの重要性がよくわかってきます。
よりよいテストを書けるように知見を深めていきたいです。

今日はどのAPIでも共通的に実行するHTTPメソッド確認用のテストを書きました。

Golangのテスト用ライブラリのapitestがかなり使いやすいのでGitHubのexampleにあるコードを参考に書きました。

github.com

exampleではライブラリで用意されている関数を使って以下の感じでテストコードが書かれています。

func TestGetUser_CookieMatching(t *testing.T) {
    apitest.New().
        Handler(newApp()).
        Get("/user/1234").
        Expect(t).
        Cookies(apitest.NewCookie("CookieForAndy").Value("Andy")).
        Status(http.StatusOK).
        End()
}

Get()がGetメソッドでリクエストを送るapitestライブラリで用意されている関数なので、想定外のHTTPメソッドには405(MethodNotAllowed)エラーを返すように以下のテストコードを自分のアプリに実装しました。

apitest.New().
    Handler(app).
    Get(apiEndpoint).
    Expect(t).
    Status(http.StatusMethodNotAllowed).
    End()

上記のように書くことでステータス405が期待値になるテストが実行できます。

他にもいろいろGitHubにあるコードを参考にしながらテストを書いていきたいと思います。