unit-testing-framework について
開発者向けのユニットテストガイドです。AAAパターン、モック、非同期処理、境界ケースを扱い、高速で独立性のある保守しやすいテストを支援します。
主な機能
- 01AAA形式のテスト構成
- 02境界ケースとエラーのテスト
- 03外部依存のモック化
- 04非同期処理とカバレッジのテスト
- 05言語別テストガイド
活用シーン
- 01新しいコードのテスト作成
- 02テストで安全性を確保したリファクタリング
- 03チームのテスト規約づくり
- 04テストユーティリティとモックの作成
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ aj-geddes/ useful-ai-prompts --skill unit-testing-frameworkインストール後、Claude Code で/unit-testing-frameworkを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/example-complete-test-suite.mdmocking-test-doubles.mdtest-cases-by-language.mdtest-structure-aaa-pattern.mdtesting-async-code.mdtesting-edge-cases.mdscripts/scaffold-tests.shtemplates/test-template.js詳細
単体テストフレームワーク
目次
概要
業界のベストプラクティスと AAA(Arrange-Act-Assert)パターンに従って、高速で、独立性があり、読みやすく、保守しやすい効果的な単体テストを作成します。
使用する場面
- 新しいコードのテストを作成するとき
- テストカバレッジを向上させるとき
- テスト標準を確立するとき
- テストによる安全性を確保しながらリファクタリングするとき
- TDD(テスト駆動開発)を実施するとき
- テストユーティリティやモックを作成するとき
クイックスタート
最小限の動作例:
// Jest/JavaScript example
describe("UserService", () => {
describe("createUser", () => {
it("should create user with valid data", async () => {
// Arrange - Set up test data and dependencies
const userData = {
email: "[email protected]",
firstName: "John",
lastName: "Doe",
};
const mockDatabase = createMockDatabase();
const service = new UserService(mockDatabase);
// Act - Execute the function being tested
const result = await service.createUser(userData);
// Assert - Verify the outcome
expect(result.id).toBeDefined();
expect(result.email).toBe("[email protected]");
expect(mockDatabase.save).toHaveBeenCalledWith(
expect.objectContaining(userData),
);
});
});
});
リファレンスガイド
詳細な実装は references/ ディレクトリにあります:
| ガイド | 内容 |
|---|---|
| テスト構造(AAA パターン) | テスト構造(AAA パターン) |
| 言語別テストケース | 言語別テストケース |
| モックとテストダブル | モックとテストダブル |
| 非同期コードのテスト | 非同期コードのテスト、テストカバレッジ |
| エッジケースのテスト | エッジケースのテスト |
| 例:完全なテストスイート | import { UserService } from "./user-service"; |
ベストプラクティス
✅ DO
- コードを書く前、またはコードと並行してテストを書く(TDD)
- 1つのテストにつき1つのことをテストする
- 説明的なテスト名を付ける
- AAA パターンに従う
- エッジケースやエラー条件をテストする
- テストを独立させ、相互に依存しないようにする
- セットアップ/ティアダウンを適切に使用する
- 外部依存関係をモックする
- 重要な処理経路で高いカバレッジを目指す
- テストを高速に保つ(各テスト 10 ms 未満)
- 類似したケースにはパラメーター化テストを使用する
- 実装ではなく、公開インターフェースをテストする
❌ DON'T
- 実装の詳細をテストする
- 互いに依存するテストを書く
- 失敗したテストを無視する
- サードパーティーライブラリのコードをテストする
- 単体テストで実際のデータベースや API を使用する
- テストを複雑にしすぎる
- エッジケースを見落とす
- リソースのクリーンアップを忘れる
- すべてをテストする(ビジネスロジックに集中する)
- 不安定なテストを書く
コメント
Markdown 対応