mcpField
U
unit-testing-framework

unit-testing-framework

github.com/aj-geddesTesting & quality373598 installsUpdated 34w ago
Repository

About unit-testing-framework

A unit-testing guide for developers focused on fast, isolated, readable, and maintainable tests. It covers the AAA pattern, mocks, asynchronous code, and edge cases.

Key features

  1. 01Apply the AAA test pattern
  2. 02Cover edge and error cases
  3. 03Mock external dependencies
  4. 04Test async code and coverage
  5. 05Use language-specific test guides

Use cases

  1. 01Write tests for new code
  2. 02Refactor with test safety
  3. 03Establish team testing standards
  4. 04Create test utilities and mocks

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/aj-geddes/useful-ai-prompts --skill unit-testing-framework

After installing, type/unit-testing-frameworkin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

references/
example-complete-test-suite.md
mocking-test-doubles.md
test-cases-by-language.md
test-structure-aaa-pattern.md
testing-async-code.md
testing-edge-cases.md
scripts/
scaffold-tests.sh
templates/
test-template.js

Details

From the project README

Unit Testing Framework

Table of Contents

Overview

Write effective unit tests that are fast, isolated, readable, and maintainable following industry best practices and AAA (Arrange-Act-Assert) pattern.

When to Use

  • Writing tests for new code
  • Improving test coverage
  • Establishing testing standards
  • Refactoring with test safety
  • Implementing TDD (Test-Driven Development)
  • Creating test utilities and mocks

Quick Start

Minimal working example:

// 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),
      );
    });
  });
});

Reference Guides

Detailed implementations in the references/ directory:

GuideContents
Test Structure (AAA Pattern)Test Structure (AAA Pattern)
Test Cases by LanguageTest Cases by Language
Mocking & Test DoublesMocking & Test Doubles
Testing Async CodeTesting Async Code, Test Coverage
Testing Edge CasesTesting Edge Cases
Example: Complete Test Suiteimport { UserService } from "./user-service";

Best Practices

✅ DO
  • Write tests before or alongside code (TDD)
  • Test one thing per test
  • Use descriptive test names
  • Follow AAA pattern
  • Test edge cases and error conditions
  • Keep tests isolated and independent
  • Use setup/teardown appropriately
  • Mock external dependencies
  • Aim for high coverage on critical paths
  • Make tests fast (< 10ms each)
  • Use parameterized tests for similar cases
  • Test public interfaces, not implementation
❌ DON'T
  • Test implementation details
  • Write tests that depend on each other
  • Ignore failing tests
  • Test third-party library code
  • Use real databases/APIs in unit tests
  • Make tests too complex
  • Skip edge cases
  • Forget to clean up resources
  • Test everything (focus on business logic)
  • Write flaky tests

Comments

Markdown supported