asyrafhussin/agent-skills

testing-best-practices

Unit testing, integration testing, and test-driven development principles.

ソースを見る

使い方

  1. インストールコマンドをコピーし、自分の環境へ導入する前にソースを確認します。
  2. 必要なツール、認証情報、対応環境を原文で確認します。
  3. 入力と成果物を指定し、出力を資料と照合します。
npx skills add https://github.com/asyrafhussin/agent-skills --skill testing-best-practices

開始前の確認

  • 導入にはモデル契約、API枠、ファイルへのアクセス許可は含まれません。
  • スター数や導入数は活動の指標であり、独立した品質・安全性試験ではありません。
リポジトリの原文

見出し、例、コード、表、リンク、参照画像を含む原文を表示しています。

Testing Best Practices

Unit testing, integration testing, and TDD principles for reliable, maintainable test suites. Contains 34 rules across 7 categories using TypeScript with Jest/Vitest.

Metadata

  • Version: 2.0.0
  • Rule Count: 34 rules across 7 categories
  • License: MIT

When to Apply

Reference these guidelines when:

  • Writing unit or integration tests
  • Reviewing test code quality
  • Improving test coverage strategy
  • Setting up testing infrastructure
  • Debugging flaky or slow tests

Rule Categories by Priority

PriorityCategoryImpactPrefix
1Test StructureCRITICALstruct-
2Test IsolationCRITICALiso-
3AssertionsHIGHassert-
4Test DataHIGHdata-
5MockingMEDIUMmock-
6CoverageMEDIUMcov-
7PerformanceLOWperf-

Quick Reference

1. Test Structure (CRITICAL)

  • struct-aaa-pattern - Arrange, Act, Assert pattern
  • struct-descriptive-names - Descriptive test names
  • struct-one-assertion - One logical assertion per test
  • struct-describe-it - Organized test suites with describe/it
  • struct-given-when-then - BDD style when appropriate
  • struct-setup-teardown - Proper setup and teardown

2. Test Isolation (CRITICAL)

  • iso-independent-tests - Tests run independently
  • iso-no-shared-state - No shared mutable state
  • iso-deterministic - Same result every run
  • iso-no-order-dependency - Run in any order
  • iso-cleanup - Clean up after tests
  • iso-test-doubles - Strategic use of test doubles

3. Assertions (HIGH)

  • assert-specific - Use specific assertions
  • assert-meaningful-messages - Helpful failure messages
  • assert-expected-actual - Expected value first
  • assert-no-magic-numbers - Use named constants
  • assert-custom-matchers - Custom matchers for domain logic

4. Test Data (HIGH)

  • data-factories - Use factories for test data
  • data-builders - Builder pattern for complex objects
  • data-faker - Generate realistic fake data
  • data-minimal - Minimal test data
  • data-realistic - Realistic edge cases
  • data-fixtures - Manage test fixtures

5. Mocking (MEDIUM)

  • mock-boundaries - Mock only at boundaries
  • mock-verify-interactions - Verify important mock calls
  • mock-minimal - Don't over-mock
  • mock-realistic - Realistic mock behavior with MSW

6. Coverage (MEDIUM)

  • cov-meaningful - Focus on meaningful coverage
  • cov-edge-cases - Cover edge cases and boundary values
  • cov-unhappy-paths - Test error scenarios
  • cov-not-100-percent - 100% coverage isn't the goal

7. Performance (LOW)

  • perf-fast-unit - Keep unit tests fast (<50ms each)
  • perf-parallel - Run tests in parallel
  • perf-test-organization - Organize tests for fast feedback

Essential Guidelines

AAA Pattern (Arrange, Act, Assert)

typescript
it('calculates total with discount', () => {
  // Arrange
  const cart = new ShoppingCart();
  cart.addItem({ name: 'Book', price: 20 });
  cart.applyDiscount(0.1);

  // Act
  const total = cart.getTotal();

  // Assert
  expect(total).toBe(18);
});

Descriptive Test Names

typescript
// ✅ Describes behavior and scenario
describe('UserService.register', () => {
  it('creates user with hashed password', () => {});
  it('throws ValidationError when email is invalid', () => {});
  it('sends welcome email after successful registration', () => {});
});

Test Isolation

typescript
// ✅ Each test sets up its own data
beforeEach(() => {
  mockRepository = { save: vi.fn(), find: vi.fn() };
  service = new OrderService(mockRepository);
});

How to Use

Read individual rule files for detailed explanations:

rules/struct-aaa-pattern.md
rules/iso-independent-tests.md
rules/mock-boundaries.md
rules/cov-meaningful.md

References

Full Compiled Document

For the complete guide with all rules expanded: AGENTS.md

タスクに関連する項目

同じリポジトリから

関連する Skills

すべての Skills
asyrafhussin
コミュニティ

laravel-inertia-react

Laravel + Inertia.js + React integration patterns. Use when building Inertia page components, handling forms with useForm, managing shared data, or implementing persistent layouts. Triggers on tasks involving Inertia.js, page props, form handling, or Laravel React integration.

導入数
2
GitHub Stars
90
更新日
8月27日
asyrafhussin
コミュニティ

react-vite-best-practices

React and Vite performance optimization guidelines. Use when writing, reviewing, or optimizing React components built with Vite. Triggers on tasks involving Vite configuration, build optimization, code splitting, lazy loading, HMR, bundle size, or React performance.

導入数
1
GitHub Stars
90
更新日
8月27日
asyrafhussin
コミュニティ

code-slop

Detect AI-generated code patterns ("slop") in PHP/Laravel and TypeScript/React source — comment narration, generic naming, premature interfaces, defensive overdose, mock-everything tests, and the absence of human "scars". Use when reviewing AI-assisted PRs, auditing code for taste/quality (not metrics — that's technical-debt), or hardening a code-review checklist. Triggers on "review for AI slop", "find AI patterns", "check code feels human", "audit code-quality taste".

導入数
2
GitHub Stars
89
更新日
8月27日
asyrafhussin
コミュニティ

technical-debt

Technical debt inventory, prioritization, and audit for PHP/Laravel (MySQL) and Node/TypeScript/React projects. Use when assessing code health, identifying refactoring candidates, planning debt paydown, or auditing a codebase for accumulated debt. Triggers on "audit technical debt", "find tech debt", "debt inventory", "what should we refactor first", or tasks involving code health, security debt, performance debt, data debt, observability debt, debt prioritization, or remediation planning.

導入数
2
GitHub Stars
89
更新日
8月27日