在 Manus 中运行任何 Skill
一键导入
一键导入
一键在 Manus 中运行任何 Skill
开始使用unit-test
星标0
分支0
更新时间2026年1月6日 19:33
単体テストの作成。「テストを書きたい」「ユニットテストを追加」「関数をテスト」などのリクエスト時に使用。
安装
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
SKILL.md
readonly菜单
単体テストの作成。「テストを書きたい」「ユニットテストを追加」「関数をテスト」などのリクエスト時に使用。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
シークレット追加時のドキュメント更新。「シークレットを追加」「環境変数を追加」「API キーを設定」などのリクエスト時に使用。
新規ブログ記事の作成。「記事を書きたい」「新しい記事を作成」「ブログ投稿」などのリクエスト時に使用。
GitHub Issue の作成。「Issue を作成」「タスクを Issue にして」「これを Issue 化」などのリクエスト時に使用。会話中にタスクを認識した際にも積極的に使用。
Pull Request の作成。「PRを作成」「プルリクエストを作成」「変更をPRにして」などのリクエスト時に使用。
GitHub Issue からタスクを読み込み実装。「Issue
依存関係のバージョン固定。package.json や Terraform Provider を編集したら必ず実行。
| name | unit-test |
| description | 単体テストの作成。「テストを書きたい」「ユニットテストを追加」「関数をテスト」などのリクエスト時に使用。 |
コンポーネント・関数の単体テストを作成するスキル。
pnpm add -D vitest @vitejs/plugin-react jsdom
pnpm add -D @testing-library/react @testing-library/jest-dom @testing-library/user-event
import react from "@vitejs/plugin-react";
import { defineConfig } from "vitest/config";
export default defineConfig({
plugins: [react()],
test: {
environment: "jsdom",
globals: true,
setupFiles: ["./vitest.setup.ts"],
include: ["src/**/*.{test,spec}.{ts,tsx}"],
},
resolve: {
alias: {
"@": "./src",
},
},
});
import "@testing-library/jest-dom/vitest";
src/
├── components/
│ ├── Button.tsx
│ └── Button.test.tsx # コンポーネントと同階層
├── lib/
│ ├── utils.ts
│ └── utils.test.ts # ユーティリティと同階層
└── __tests__/ # 統合テスト用(オプション)
import { render, screen } from "@testing-library/react";
import userEvent from "@testing-library/user-event";
import { describe, expect, it, vi } from "vitest";
import { Button } from "./Button";
describe("Button", () => {
it("renders with text", () => {
render(<Button>Click me</Button>);
expect(screen.getByRole("button", { name: /click me/i })).toBeInTheDocument();
});
it("calls onClick when clicked", async () => {
const user = userEvent.setup();
const handleClick = vi.fn();
render(<Button onClick={handleClick}>Click me</Button>);
await user.click(screen.getByRole("button"));
expect(handleClick).toHaveBeenCalledTimes(1);
});
it("is disabled when disabled prop is true", () => {
render(<Button disabled>Click me</Button>);
expect(screen.getByRole("button")).toBeDisabled();
});
});
import { describe, expect, it } from "vitest";
import { formatDate, slugify } from "./utils";
describe("formatDate", () => {
it("formats date correctly", () => {
expect(formatDate("2025-01-01")).toBe("2025年1月1日");
});
it("handles invalid date", () => {
expect(formatDate("invalid")).toBe("Invalid Date");
});
});
describe("slugify", () => {
it("converts string to slug", () => {
expect(slugify("Hello World")).toBe("hello-world");
});
});
import { render, screen, waitFor } from "@testing-library/react";
import { describe, expect, it, vi } from "vitest";
import { AsyncComponent } from "./AsyncComponent";
describe("AsyncComponent", () => {
it("shows loading state initially", () => {
render(<AsyncComponent />);
expect(screen.getByText(/loading/i)).toBeInTheDocument();
});
it("shows data after loading", async () => {
render(<AsyncComponent />);
await waitFor(() => {
expect(screen.getByText(/data loaded/i)).toBeInTheDocument();
});
});
});
# 全テスト実行
pnpm test
# ウォッチモード
pnpm test:watch
# カバレッジ付き
pnpm test:coverage
# 特定ファイル
pnpm test src/lib/utils.test.ts
{
"scripts": {
"test": "vitest run",
"test:watch": "vitest",
"test:coverage": "vitest run --coverage"
}
}
*.test.ts(x))getByRole - アクセシビリティgetByLabelText - フォーム要素getByPlaceholderText - 入力フィールドgetByText - テキストコンテンツgetByTestId - 最終手段