在 Manus 中运行任何 Skill
一键导入
一键导入
一键在 Manus 中运行任何 Skill
开始使用testing
星标3
分支0
更新时间2026年6月7日 02:51
测试全流程,合并了 TDD 工作流和测试策略。覆盖 TDD、单元/集成/E2E、Mock、契约测试、属性测试
安装
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
SKILL.md
readonly菜单
测试全流程,合并了 TDD 工作流和测试策略。覆盖 TDD、单元/集成/E2E、Mock、契约测试、属性测试
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | testing |
| description | 测试全流程,合并了 TDD 工作流和测试策略。覆盖 TDD、单元/集成/E2E、Mock、契约测试、属性测试 |
每个循环 2-10 分钟。不写没有失败测试的生产代码。
describe("OrderService", () => {
it("应该在订单超过阈值时应用折扣", () => {
// Arrange
const order = createOrder({ items: [{ price: 150, qty: 1 }] });
// Act
const result = applyDiscount(order, { threshold: 100, percent: 10 });
// Assert
expect(result.total).toBe(135);
});
});
命名:describe('功能') > it('应该在[条件]时[行为]')
| 层级 | 范围 | 速度 | 依赖 | 比例 |
|---|---|---|---|---|
| 单元 | 单函数/类 | <100ms | 无(全部 mock) | 70% |
| 集成 | 模块边界 | <5s | 真实 DB/FS | 20% |
| E2E | 完整用户流 | <30s | 全栈 | 10% |
describe("createUser", () => {
it("应该在邮箱已存在时抛出 DuplicateEmailError", async () => {
const repo = new InMemoryUserRepo();
await repo.create({ email: "a@b.com", name: "Alice" });
const service = new UserService(repo);
await expect(service.create({ email: "a@b.com", name: "Bob" }))
.rejects.toThrow(DuplicateEmailError);
});
});
vi.fn() / vi.mock() 做 mockbeforeEach 共享 setup,不共享可变状态import { PostgreSqlContainer } from "@testcontainers/postgresql";
let container, db;
beforeAll(async () => {
container = await new PostgreSqlContainer("postgres:16").start();
db = await createDatabase(container.getConnectionUri());
await db.migrate();
}, 60000);
afterAll(async () => { await db.close(); await container.stop(); });
it("创建并查询用户", async () => {
const user = await db.user.create({ name: "Alice", email: "a@test.com" });
const found = await db.user.findById(user.id);
expect(found).toEqual(user);
});
const provider = new PactV4({ consumer: "OrderService", provider: "UserService" });
it("返回用户信息", async () => {
await provider.addInteraction()
.given("user-1 exists")
.uponReceiving("GET /api/users/user-1")
.withRequest("GET", "/api/users/user-1")
.willRespondWith(200, b => b.jsonBody({ id: "user-1", name: "Alice" }))
.executeTest(async (mock) => {
const client = new UserClient(mock.url);
const user = await client.getUser("user-1");
expect(user.name).toBe("Alice");
});
});
import fc from "fast-check";
it("排序后元素数量不变", () => {
fc.assert(fc.property(
fc.array(fc.record({ name: fc.string(), age: fc.nat(120) })),
(users) => sortUsers(users, "name").length === users.length
));
});
it("渲染用户卡片", () => {
const { container } = render(<UserCard user={mockUser} />);
expect(container).toMatchSnapshot(); // code review 时仔细检查 diff
});
afterEach 重置共享 mockvitest run --coverage --coverage.thresholds.lines=80 --coverage.thresholds.branches=70 --coverage.thresholds.functions=90
单文件代码审查,6个维度逐项检查。覆盖正确性、安全性、性能、可维护性、测试、无障碍
CI/CD 流水线和容器化部署,覆盖 GitHub Actions、GitLab CI、Docker、测试策略和部署自动化
查询优化、索引策略和数据库性能调优,覆盖 PostgreSQL 和 MySQL
微服务设计模式,涵盖服务网格、事件驱动架构、Saga 模式和 API 网关
Web 性能优化,涵盖包分析、懒加载、缓存策略和 Core Web Vitals
TypeScript 进阶模式,涵盖泛型、条件类型、映射类型、模板字面量和类型守卫