Claude Code Plugins

Community-maintained marketplace

Feedback

単体テストルール。フラット構造、モック使用制限、パラメータ化テスト、テストピラミッドなどの規約を定義。Vitest/Jest使用時に参照。

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 単体テストルール。フラット構造、モック使用制限、パラメータ化テスト、テストピラミッドなどの規約を定義。Vitest/Jest使用時に参照。

単体テストルール

単体テスト実装における規約を定義するスキル。

基本ルール

  • 網羅テスト: 正常系・異常系・境界値のテストケースを作成
  • 振る舞いのテスト: 実装詳細ではなく振る舞いを確認
  • モックは最小限: 基本はモックを使用しない
  • フラット構造: describeブロックの過度な使用を避ける
  • テストケース名: 日本語で記述
  • パラメータ化: test.each を活用

テスト構造(フラット原則)

// ✅ 推奨: describeなしのフラット構造
test("有効な認証情報でログインするとトークンが返る", () => {
  const result = login({ email: "test@example.com", password: "valid" });
  expect(result.token).toBeDefined();
});

test("無効なメールではValidationErrorが発生する", () => {
  expect(() => login({ email: "invalid", password: "valid" }))
    .toThrow(ValidationError);
});

モックルール

モック禁止対象

  • 自作の関数・コンポーネント
  • プロジェクト内のユーティリティ関数
  • 内部状態管理ロジック

モック許可対象

  • HTTPリクエスト(fetch、axiosなど)
  • 外部API呼び出し
  • ファイルシステムアクセス
  • データベース接続
  • 時間依存処理(Date、setTimeoutなど)

パラメータ化テスト

test.each([
  [1, 2, 3],
  [5, 5, 10],
  [-1, 1, 0],
])("add(%i, %i) は %i を返す", (a, b, expected) => {
  expect(add(a, b)).toBe(expected);
});

テストピラミッド

レベル 比率 対象
単体テスト 70-80% 関数、メソッド、個別コンポーネント
統合テスト 15-25% モジュール間連携、API統合
E2Eテスト 5-10% ユーザーシナリオ全体

ディレクトリ構成

__tests__/
├── user-login.test.ts
├── user-registration.test.ts
├── user-profile.test.ts
└── helpers/
    └── user-test-utils.ts

適正化指針

  • 重複テストの排除: 同じ振る舞いを複数方法でテストしない
  • 実装詳細のテスト禁止: privateメソッドや内部状態の直接テストは行わない
  • 公開インターフェースのみテスト: 外部から呼び出される関数に集中
  • ファイル分割: 100-150行を超えたら分割

関連スキル

  • TDD: tdd
  • カスタムフック: custom-hook