跳到正文
cccskills
免费在 GitHub 公开

writing-tests

Analyze existing code and write comprehensive unit and integration tests for it. Detects the test framework, identifies untested code paths, and generates tests with proper mocking, edge cases, and assertions. Use when the user asks to add tests, improve coverage, or test a specific module.

中文简介正在准备中。当前显示原文说明。

集成工具Playwright
查看安装方法

包含的文件(1)

  • SKILL.md3.9 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

Writing Tests

Use this skill when the user asks to add tests to existing code, improve test coverage, or write tests for a specific file or module.

Steps

  1. Detect the test setup — check what's already configured:

    # Check package.json for test runner
    cat package.json | grep -E "jest|vitest|mocha|playwright|cypress"
    

    Look for config files: vitest.config.ts, jest.config.ts, playwright.config.ts, .mocharc.*. Check for existing test files to understand the project's test patterns and conventions.

  2. If no test runner exists — set one up:

    npm install -D vitest @testing-library/react @testing-library/jest-dom
    

    Add a test script to package.json:

    { "test": "vitest run", "test:watch": "vitest" }
    
  3. Analyze the target code — read the file(s) to test and identify:

    • Public API: exported functions, classes, components, hooks
    • Code paths: conditionals, error handling, edge cases
    • Dependencies: external services, databases, APIs that need mocking
    • Side effects: file I/O, network calls, DOM mutations
  4. Create the test file — place it next to the source file or in a __tests__/ directory, matching the project's convention:

    • src/utils/format.ts → src/utils/format.test.ts
    • src/components/Button.tsx → src/components/Button.test.tsx
  5. Write tests following this structure:

    import { describe, it, expect, vi } from "vitest";
    
    describe("functionName", () => {
      // Happy path
      it("returns formatted output for valid input", () => { ... });
    
      // Edge cases
      it("handles empty string", () => { ... });
      it("handles null/undefined input", () => { ... });
    
      // Error cases
      it("throws on invalid argument", () => { ... });
    
      // Boundary conditions
      it("handles maximum length input", () => { ... });
    });
    
  6. Mock external dependencies — don't make real API calls or database queries in unit tests:

    vi.mock("@/lib/db", () => ({
      query: vi.fn().mockResolvedValue([{ id: 1, name: "test" }]),
    }));
    

    For React components, mock hooks that fetch data:

    vi.mock("@/hooks/useUser", () => ({
      useUser: () => ({ user: { name: "Test" }, isLoading: false }),
    }));
    
  7. Test React components with Testing Library:

    import { render, screen, fireEvent } from "@testing-library/react";
    
    it("renders the button and handles click", () => {
      const onClick = vi.fn();
      render(<Button onClick={onClick}>Click me</Button>);
      fireEvent.click(screen.getByRole("button", { name: "Click me" }));
      expect(onClick).toHaveBeenCalledOnce();
    });
    
  8. Run the tests and verify they pass:

    npm test
    

    If any fail, fix the test or the code (depending on whether the test expectation or the implementation is wrong).

What to Test

  • Always test: public API, error handling, edge cases (empty, null, zero, negative), state transitions, async behavior
  • Skip testing: private implementation details, third-party library internals, simple getters/setters, type-only code

Notes

  • Match the project's existing test style — if they use test() instead of it(), follow that.
  • Don't test implementation details — test behavior and outputs, not internal method calls.
  • Use descriptive test names that explain the scenario: "returns 0 when cart is empty" not "test1".
  • One assertion concept per test — multiple expect calls are fine if they verify the same behavior.
  • For async code, always await the result or use resolves/rejects matchers.

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

Use Cursor's browser aria snapshots to audit a page for accessibility issues — missing labels, broken tab order, contrast, and ARIA misuse.

中文简介正在准备中。当前显示原文说明。

0xAidan/polymarket-bot-test42026年9月4日 更新

Add PostHog analytics to a web application, including event tracking, page views, feature flags, and session replay.

中文简介正在准备中。当前显示原文说明。

0xAidan/polymarket-bot-test42026年9月4日 更新

Generate OpenAPI/Swagger documentation for an API, including endpoint schemas, request/response types, and interactive docs UI.

中文简介正在准备中。当前显示原文说明。

0xAidan/polymarket-bot-test42026年9月4日 更新

Add authentication to a web application using NextAuth.js (Auth.js), including OAuth providers, session management, and protected routes.

中文简介正在准备中。当前显示原文说明。

0xAidan/polymarket-bot-test42026年9月4日 更新

Dockerize an application with a production-ready Dockerfile, docker-compose setup, and .dockerignore.

中文简介正在准备中。当前显示原文说明。

0xAidan/polymarket-bot-test42026年9月4日 更新

Set up Playwright end-to-end testing in a project, including test configuration, example tests, and CI integration.

中文简介正在准备中。当前显示原文说明。

0xAidan/polymarket-bot-test42026年9月4日 更新

查看 0xAidan 的全部技能

报告此技能的问题