Write Tests

このプロジェクトでテストコードを作成する際に使用する。テーブル駆動テスト、モック作成、検証観点のパターンに従う。 Use when this capability is needed.

tomevault-io Updated

File contents

テストの作成

このプロジェクトのテストはtestifyなどの外部テストフレームワークを使わず、標準のtestingパッケージをベースに書く。

テストファイルの配置

テスト対象と同じパッケージ内に配置する。ファイル名は{対象ファイル名}_test.goとする。

テスト関数の命名

  • 関数テスト: Test{関数名}
  • メソッドテスト: Test{型名}_{メソッド名}
  • 条件付き: Test{型名}{メソッド名}{条件}

テーブル駆動テスト

このプロジェクトではテーブル駆動テストを標準パターンとして使用する。テストケースにはnameフィールドで説明を記載し、t.Runでサブテストとして実行する。

モックの作成

domain/repositoryのインターフェースに対し、テストファイル内にモック構造体を定義する。モック構造体のフィールドで戻り値やエラーを制御する。呼び出し回数を検証したい場合はcalledフィールドを追加する。

HTTPサーバのモック

外部APIとの通信テストにはnet/http/httptestパッケージを使用する。テスト終了時にdefer server.Close()で確実にクリーンアップする。

テストで検証すべき観点

  • 正常系: 期待する出力が得られること
  • エラー系: 適切なエラーが返ること
  • 境界値: 空スライス、nil、ゼロ値の扱い
  • context取消: context.WithCancelで中断時の挙動
  • 並行アクセス: sync.WaitGroupで複数ゴルーチンからの同時アクセス
  • 冪等性: 同じ操作を2回実行しても問題ないこと

CIとの整合

テストはgo test -race ./...で実行される。データ競合が検出されないよう、共有状態へのアクセスにはsync.Mutexなどで保護する。


Converted and distributed by TomeVault — claim your Tome and manage your conversions.

tomevault-io/skills-registry/tree/main/cat5neko--misskeyrssbot--write-tests commit 10e2731c32

Frequently asked questions

npx skillmds@latest add tomevault-io/write-tests-10