Claude Code Plugins

Community-maintained marketplace

Feedback

プロジェクトのテスト実装ガイドラインに従ってテストコードを生成・レビューします。テストケースの作成、既存テストのレビュー、テストのリファクタリング時に使用してください。DDDとオニオンアーキテクチャに基づいたテスト設計を行い、日本語のテストケース名とArrange-Act-Assertパターンを使用します。Vitest、testInjector、インメモリリポジトリ、Factory、setupFiles()に関連するテスト作成時に使用します。

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name testing
description プロジェクトのテスト実装ガイドラインに従ってテストコードを生成・レビューします。テストケースの作成、既存テストのレビュー、テストのリファクタリング時に使用してください。DDDとオニオンアーキテクチャに基づいたテスト設計を行い、日本語のテストケース名とArrange-Act-Assertパターンを使用します。Vitest、testInjector、インメモリリポジトリ、Factory、setupFiles()に関連するテスト作成時に使用します。

テストケース名の規則

日本語で「(条件)場合、(期待値)」形式で記述する。

良い例:

  • "投稿が見つからない場合はnotFoundPostを返す"
  • "フォローしているユーザーが投稿している場合、そのユーザーの投稿を返す"
  • "subscriberの投稿は保存すべき"

悪い例:

  • "正しいデータを返す"
  • "エラーハンドリング"

Arrange-Act-Assertパターン

全てのテストケースは以下の構造で記述する:

test("(条件)場合、(期待値)", async () => {
  // arrange
  // テストデータの準備
  // act
  // テスト対象の実行
  // assert
  // 結果の検証
});

act & assertを同じ行で書く場合:

test("handleが解決できない場合、HandleResolutionErrorをスローする", async () => {
  // arrange
  const uri = new AtUri("at://notfound.example/app.bsky.feed.post/abc123");

  // act & assert
  await expect(atUriService.resolveHostname(uri)).rejects.toThrow(
    HandleResolutionError,
  );
});

詳細なガイド

テストパターンと実装例: references/patterns.mdを参照

  • データベース使用パターン(Repository層)
  • インメモリ実装パターン(Application/Domain層)
  • recordFactoryの使用例
  • インメモリリポジトリのセットアップ
  • ctxオブジェクトの使用
  • テストすべきケース
  • レイヤー別の使い分け

アサーション: references/assertions.mdを参照

  • toMatchObjectで部分一致
  • 配列の部分一致
  • エラーの検証

Factoryの使い方: references/factories.mdを参照

  • @repo/test-utils のFactory(データベース使用)
  • @repo/common/test のファクトリ関数(インメモリ)
  • 使い分けガイド

インメモリリポジトリの重要な注意

Application/Domain層のテストでインメモリリポジトリを使用する場合、テスト間のデータ分離が自動的に行われる:

  • vitest.unit.setup.tssetupFiles()が呼ばれ、beforeEachで全てのインメモリリポジトリが.clear()される
  • 新しいアプリを作成する場合はvitest.unit.setup.tssetupFiles()の呼び出しを記述する必要がある

コメントとコードスタイル

  • テストケースにはarrange-act-assertパターンに基づいたコメントを必ず書く
  • プロダクションコードにはコメントを追加しない
  • プロダクションコードに既に存在するコメントは削除しない