# 测试标准

[目的：指导测试什么、测试在哪里以及如何构建它们]

## 理念
- 测试行为，而非实施
- 偏好快速、可靠的测试；最小化脆弱的模拟
- 深度覆盖关键路径；广度优于100%追求

## 组织
选项:
- 共置: `component.tsx` + `component.test.tsx`
- 分离: `/src/...` 和 `/tests/...`
选择一个作为默认；允许有理由的例外。

命名:
- 文件: `*.test.*` 或 `*.spec.*`
- 套件: 测试的内容；用例: 预期行为

## 测试类型
- 单元: 单个单元，模拟依赖，非常快
- 集成: 多个单元一起，仅模拟外部
- E2E: 完整流程，最少模拟，仅用于关键旅程

## 结构（AAA）
```typescript
it('does X when Y', () => {
  // Arrange
  const input = setup();
  // Act
  const result = act(input);
  // Assert
  expect(result).toEqual(expected);
});
```

## 模拟和数据
- 模拟外部（API/DB）；永远不模拟被测系统
- 使用工厂/固定装置；测试之间重置状态
- 保持测试数据最小且意图明确

## 覆盖率
- 目标: [%总体]；关键领域更高
- 在CI中强制执行阈值；例外需要审查理由

---
_关注模式和决策。工具特定配置位于其他地方。_
