0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Go言語キャッチアップの為に Part2

0
Posted at

はじめに

前回の記事でGo言語のキャップアップをしました。
今回はその続きとして単体テストコードを実装してみました。

実際のコードは下記にコミットしてます。

テスト仕様(検証内容)

以下が単体テストで実装した内容になります。

カテゴリ テスト項目 検証内容 期待される結果
データ操作 TestPageSave Page 構造体の save メソッドがファイルを正しく書き込むか 指定したパスにファイルが作成され、中身が一致すること
TestLoadPage 既存のファイルから loadPage が正しくデータを読み出すか 読み出した Page.Body が元のデータと一致すること
ハンドラー TestViewHandler 存在するページへアクセスした際の挙動 ステータスコード 200 (OK) が返ること
TestViewHandler_NotFound 存在しないページへアクセスした際のリダイレクト ステータスコード 302 (Found) で /edit/ へ遷移すること
TestSaveHandler フォームからのデータを受け取って保存し、リダイレクトするか ファイルが保存され、/view/ へリダイレクトされること
バリデーション TestMakeHandler regexp によるパス制限が機能しているか 不正なパス(例: /view/!!)に対して 404 を返すこと

テスト結果

コードはGitHubよりご確認ください。
下記にテスト実行時の結果を貼り付けてます。

無事テストが全て通ったことを確認しました。

C:\dev\ws\docker\goTutorial_testCode>docker exec -it gotutorial_testcode-app-1 go test -v
=== RUN   TestPageSave
--- PASS: TestPageSave (0.01s)
=== RUN   TestLoadPage
--- PASS: TestLoadPage (0.01s)
=== RUN   TestViewHandler
--- PASS: TestViewHandler (0.01s)
=== RUN   TestSaveHandler
--- PASS: TestSaveHandler (0.01s)
=== RUN   TestPathValidation
--- PASS: TestPathValidation (0.00s)
PASS
ok      github.com/13-5-7/goTutorial_testCode   0.049s

こちらはテストの網羅率です。
約65%網羅している事が確認できます。

C:\dev\ws\docker\goTutorial_testCode>docker exec -it gotutorial_testcode-app-1 go test -cover
PASS
coverage: 64.1% of statements
ok      github.com/13-5-7/goTutorial_testCode   0.037s

実行時の注意点

main_test.go
// テスト用データの削除
os.RemoveAll(SavingFilePath)

テスト実行するとこの行でdataフォルダごと削除されてしまうので、残したい場合はコメントアウトしてください。
現在はテスト実行のたびに環境をクリーンにするためにあえて削除するようにしています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?