integration-testing について
アプリケーションのコンポーネントと外部システムの連携を検証する、開発者向けの統合テストスキルです。単体テストとは異なり、データベースや API、メッセージキューなどとの実際の接続を扱います。
主な機能
- 01API・データベース統合テスト
- 02サービス間通信の検証
- 03レイヤー横断のデータフローテスト
- 04認証フローのテスト
- 05メッセージキュー統合テスト
活用シーン
- 01実データベースを使った API テスト
- 02サービス間通信の確認
- 03認証と認可の検証
- 04サードパーティサービス連携のテスト
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ aj-geddes/ useful-ai-prompts --skill integration-testingインストール後、Claude Code で/integration-testingを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/api-integration-testing.mddatabase-integration-testing.mdexternal-service-integration.mdmessage-queue-integration.mdscripts/scaffold-tests.shtemplates/test-template.js詳細
結合テスト
目次
概要
結合テストでは、異なるコンポーネント、モジュール、またはサービスが連携して正しく動作することを検証します。単一の関数を分離してテストする単体テストとは異なり、結合テストでは、データベース、API、外部サービス、インフラストラクチャなど、システムの複数の部分の相互作用を検証します。
使用する場面
- 実際のデータベース接続を使って API エンドポイントをテストする
- サービス間の通信を検証する
- 複数のレイヤーにまたがるデータフローを検証する
- 実際のデータベースを使ってリポジトリ/DAO レイヤーをテストする
- 認証および認可のフローを確認する
- メッセージキューのコンシューマーとプロデューサーを検証する
- サードパーティサービスとの統合をテストする
クイックスタート
最小限の動作例:
// test/api/users.integration.test.js
const request = require("supertest");
const app = require("../../src/app");
const { setupTestDB, teardownTestDB } = require("../helpers/db");
describe("User API Integration Tests", () => {
beforeAll(async () => {
await setupTestDB();
});
afterAll(async () => {
await teardownTestDB();
});
beforeEach(async () => {
await clearUsers();
});
describe("POST /api/users", () => {
it("should create a new user with valid data", async () => {
const userData = {
email: "[email protected]",
name: "Test User",
password: "SecurePass123!",
};
// ... (see reference guides for full implementation)
リファレンスガイド
詳細な実装については、references/ ディレクトリを参照してください。
| ガイド | 内容 |
|---|---|
| API 結合テスト | API 結合テスト |
| データベース結合テスト | データベース結合テスト |
| 外部サービスとの結合 | 外部サービスとの結合 |
| メッセージキューとの結合 | メッセージキューとの結合 |
ベストプラクティス
✅ 推奨事項
- 結合テストでは実際のデータベース(インメモリまたはコンテナ)を使用する
- モックしたレスポンスではなく、実際の HTTP リクエストをテストする
- 操作後のデータベースの状態を検証する
- トランザクションの境界とロールバックをテストする
- テストに認証/認可を含める
- エラーシナリオとエッジケースをテストする
- 分離された環境にはテストコンテナを使用する
- テスト間でデータをクリーンアップする
❌ 避けるべき事項
- 結合テストでデータベース接続をモックする
- エラーパスのテストを省略する
- テストデータをデータベースに残す
- テストに本番データベースを使用する
- トランザクション管理を無視する
- 正常系のパスだけをテストする
- テスト間で状態を共有する
- URL や認証情報をハードコードする
コメント
Markdown 対応