testing について
Noodle 開発者向けのテスト駆動スキルで、修正前に不具合を再現する手順を中心に説明します。ディレクトリ形式のフィクスチャテストと、テストの実行・確認・保守に使うコマンドを扱います。
主な機能
- 01不具合再現を先に行う手順
- 02ディレクトリ形式のテストフィクスチャ
- 03不具合フィクスチャのガイド
- 04テストとチェックのコマンド
- 05フィクスチャのハッシュと出力の保守
活用シーン
- 01コード変更前の不具合再現
- 02フィクスチャを使った回帰テストの追加
- 03単一パッケージや統合テストの実行
- 04フィクスチャとプロジェクト品質の確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ poteto/ noodle --skill testingインストール後、Claude Code で/testingを入力して読み込まれたか確認します。
同梱ファイルreferences/fixtures.md
詳細
テスト
デフォルトではテスト駆動です。解決する前に、問題があることを実証します。
基本的なワークフロー:まずバグを再現
- 再現 — 問題が発生するシナリオを実行し、実際の動作を確認します
- 失敗するテストを書く — テストケースとして最小限の再現を作成します
- 失敗するテストをコミット —
Skill(commit)を使用し、test: reproduce #issue-descriptionのようなメッセージを指定します - コードを修正 — 修正を試みるのはここからです
- 検証 —
pnpm testを実行し、テストが成功することを確認します - 修正をコミット — テストとは別のコミットにします
これはすべてのバグ修正に適用されます。失敗するテストはバグの存在を証明し、再発を防ぎます。
フィクスチャテスト
Noodle では testdata/ にディレクトリベースのフィクスチャを使用します。形式、ヘルパー API、コードパターンの詳細はreferences/fixtures.mdを参照してください。
新しいフィクスチャの作成
./scripts/scaffold-fixture.sh <package-dir> <fixture-name> [state-count]
生成された input.json/input.ndjson と expected.md に内容を入力してから、次を実行します。
pnpm fixtures:hash:sync
バグフィクスチャ
バグフィクスチャの形式(frontmatter のフィールド、期待されるエラーセクション、修正ワークフロー)の詳細は、references/fixtures.mdを参照してください。
主なコマンド
| コマンド | 目的 |
|---|---|
pnpm test | すべてのテストを実行 |
pnpm test:short | 統合テストをスキップ |
pnpm check | ローカル CI を一通り実行(テスト+vet+lint+フィクスチャ) |
pnpm bugs | 既知のバグとしてマークされたフィクスチャを一覧表示 |
pnpm fixtures:loop | ループフィクスチャが期待値と一致するか検証 |
pnpm fixtures:loop:record | ループフィクスチャの期待される出力を再生成 |
pnpm fixtures:hash | フィクスチャの入力ハッシュを検証 |
pnpm fixtures:hash:sync | フィクスチャの入力ハッシュを更新 |
pnpm vet | go vet を実行 |
pnpm lint:arch | アーキテクチャの lint(ファイルサイズ、レガシーパターン) |
特定のテストの実行
# Single package
go test ./loop
# Single test
go test ./loop -run TestLoopDirectoryFixtures
# Bypass cache
go test -count=1 ./parse
# With race detector
go test -race ./...
# Verbose
go test -v ./tui
統合テスト
実行時間が長いテストや外部依存関係のあるテストでは、testing.Short() を使用します。
if testing.Short() {
t.Skip("skipping integration test in short mode")
}
pnpm test:short はこれらのテストをスキップします。pnpm test はすべて実行します。
コメント
Markdown 対応