golang(echo) アプリでハンドラの中にある処理をモックに置き換えてテストしたい。
Q&A
Closed
解決したいこと
golang(echo) アプリでハンドラの中にある処理をモックに置き換えてテストしたい。
前提
プログラマーを目指してポートフォリオを作成している者です。
只今 golang (echo) + vue で四択クイズの web アプリを作成しております。
今は、"testing" や "httptest" を使って AWS S3 へ画像を保存する golang 側のハンドラに対するテストを書こうとしております。
AWS S3 へ画像を保存する処理のみに対する単体テストの時は、こちらの記事 より interface を使ってモックを作るということは理解できていると思っております。
問題
例えば、以下のハンドラに対してテストを書く場合、
Create 関数を直接実行したり、HTTP サーバーを立ててリクエストを送り、その結果を検証するテストが書けるかと思います。
quiz_controller.go
func Create(c echo.Context) error {
// クイズをDBに保存したり、AWS 3S へ画像を保存する処理など(省略....)
return c.JSON(http.StatusOK, true)
}
実際に AWS S3 に画像を保存してしまえば、テストも可能かとは思います。
しかし、ここで 2点問題があると考えております。
- 上記の Create 関数が外部処理に完全に依存してしまい、テスト結果が不安定になってしまう
- テストの度に AWS S3 へ画像を保存してしまう
Create 関数の中の画像保存の処理をモックに置き換えられたなら、全て問題が解決すると思うのですがその方法が分かりません。
0