用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/tomevault-io/skills-registry --skill test-patterns命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
正在显示 SKILL.md
| Use when this capability is needed.
> Use when this capability is needed.
Review architecture and API design for the vfs-s3 project. Use when the user mentions @architect, asks to review an issue's design, discuss module boundaries, API shape, or architectural decisions for vfs-s3. Also trigger when the user wants to create an ADR (Architecture Decision Record) or evaluate a technical approach for the project. Intended for dispatch from Codex automation or Claude routines; GitHub trigger phrase: @vfs-s3-bot please prepare design doc Use when this capability is needed.
| name | test-patterns |
| description | >- Use when this capability is needed. |
プロジェクトのテスト戦略に基づいてテストを実装・レビューするためのスキル。 TESTING.md で定義されたパターンと基準を適用する。
/\
/E2E\ (5%) - クリティカルパス100%
/------\
/統合テスト\ (20%) - 60%以上カバレッジ
/----------\
/ユニットテスト\ (75%) - 80%以上カバレッジ
/--------------\
| テスト種別 | 比率 | カバレッジ目標 | 優先度 |
|---|---|---|---|
| ユニットテスト | 75% | 80%以上 | 高 |
| 統合テスト | 20% | 60%以上 | 中 |
| E2Eテスト | 5% | クリティカルパス100% | 高 |
プロジェクトの最低カバレッジ基準:
| メトリクス | 閾値 |
|---|---|
| branches | 70% |
| functions | 80% |
| lines | 80% |
| statements | 80% |
// jest.config.js
coverageThreshold: {
global: {
branches: 70,
functions: 80,
lines: 80,
statements: 80
}
}
すべてのテストは Arrange-Act-Assert パターンに従うこと:
describe('UserService', () => {
let service: UserService;
let mockRepository: jest.Mocked<IUserRepository>;
beforeEach(() => {
// Arrange: テスト準備(各テストで新しいインスタンス)
mockRepository = mock<IUserRepository>();
service = new UserService(mockRepository);
});
describe('createUser', () => {
it('should create user successfully with valid data', async () => {
// Arrange
const userData = { email: 'test@example.com', name: 'Test User' };
const expectedUser = { id: '123', ...userData };
mockRepository.save.mockResolvedValue(expectedUser);
// Act
const result = await service.createUser(userData);
// Assert
expect(result).toEqual(expectedUser);
expect(mockRepository.save).toHaveBeenCalledWith(
expect.objectContaining(userData)
);
});
it('should throw ValidationError for invalid email', () => {
invalidData = { : , : };
(service.(invalidData))
..();
(mockRepository.)..();
});
});
});
テスト名は具体的で、何をテストしているかが明確であること:
// ✅ 良い例: 具体的で理解しやすい
it('should return 404 when user does not exist', () => {});
it('should validate email format before saving', () => {});
it('should retry 3 times on network failure', () => {});
// ❌ 悪い例: 曖昧で情報が不足
it('works', () => {});
it('test user', () => {});
it('error case', () => {});
各テストは他のテストに依存しないこと:
// ✅ 良い例: 各テストが独立
describe('UserService', () => {
let service: UserService;
beforeEach(() => {
service = new UserService(); // 各テストで新しいインスタンス
});
test('test1', () => { /* 他のテストに依存しない */ });
test('test2', () => { /* 他のテストに依存しない */ });
});
// ❌ 悪い例: テスト間で状態を共有
let globalUser;
test('create user', () => { globalUser = createUser(); });
test('update user', () => { updateUser(globalUser); }); // 前のテストに依存
ルール:
beforeEach でインスタンスを再作成型安全なモック生成には jest-mock-extended などのライブラリを使用する:
// jest-mock-extended の使用を推奨
import { mock } from 'jest-mock-extended';
const mockRepository = mock<IUserRepository>();
テストデータの構築には Builder パターンを使用する:
class UserBuilder {
private user: Partial<User> = {
id: '123',
email: 'default@example.com',
name: 'Default User',
};
withEmail(email: string): this {
this.user.email = email;
return this;
}
withName(name: string): this {
this.user.name = name;
return this;
}
build(): User {
return this.user as User;
}
}
// 使用例
const user = new UserBuilder().withEmail('custom@example.com').build();
固定のテストデータはフィクスチャファイルで管理する:
// fixtures/users.ts
export const fixtures = {
validUser: {
id: '123',
email: 'john@example.com',
name: 'John Doe',
role: 'user',
createdAt: new Date('2024-01-01'),
},
adminUser: {
id: '456',
email: 'admin@example.com',
name: 'Admin User',
role: 'admin',
createdAt: new Date('2024-01-01'),
},
};
describe ブロックで論理的にグループ化beforeAll でアプリ・DB セットアップafterAll でリソースクリーンアップbeforeEach でデータベース状態をリセットテストは以下の順序で CI パイプラインに組み込む:
テストが失敗した場合、後続のステップは実行しない。
Converted and distributed by TomeVault — claim your Tome and manage your conversions.
基于 SOC 职业分类