---
title: 测试文档
order: 4
category: atom
---

## 1. 测试目标

覆盖 `PisellFinancialSummary` 的数据转换、展示规则（Balance Due / Total / Paid / Refund）、配置项（显隐、金额格式、标题覆盖、缺失占位）、边界情况（无数据隐藏区块、0 金额、展开/收起），以及基础渲染与样式（Figma 标注）。

## 2. 测试环境

- React 18
- Storybook（用于人工回归与视觉核对）
- Vitest + Testing Library（用于单测）

## 3. 测试用例

### 3.1 基础渲染

- **TC-001**：仅 `data.balanceDue` 时能正常渲染，首行展示 Balance Due 与金额或占位符
- **TC-002**：`data` 含 total / paid / refund 时，对应区块按配置展示（showTotal/showPaid/showRefund）
- **TC-003**：组件根节点包含类名 `pisell-financial-summary`，内部使用 `PisellHierarchicalSummaryList`

### 3.2 数据转换与展示

- **TC-010**：Balance Due 为 `null` 时展示 `missingValuePlaceholder`（默认 "—"）
- **TC-011**：Total 有 children 时展示 Total 行并可展开；Total 无 children 时不展示展开箭头
- **TC-012**：Total 未传 value 时，若有 children 则展示 children 金额之和（聚合）
- **TC-013**：Paid 无数据（空数组或未传）时不展示 Paid 区块
- **TC-014**：Refund 无数据时不展示 Refund 区块
- **TC-015**：Payment 行展示 methodName、time、格式化 amount；Refund 行展示 label、格式化 amount

### 3.3 配置项

- **TC-020**：`showTotal=false` 时不展示 Total 区块
- **TC-021**：`showPaid=false` 时不展示 Paid 区块
- **TC-022**：`showRefund=false` 时不展示 Refund 区块
- **TC-023**：`showItemsCount=false` 时行内不展示 N items
- **TC-024**：`hideZeroAmountRows=true` 时金额为 0 的行不展示
- **TC-025**：`currencySymbol`、`amountPrecision` 生效，金额格式符合 `formatAmountWithOptions`
- **TC-026**：`titleBalanceDue` / `titleTotal` / `titlePaid` / `titleRefund` 覆盖内置多语言标题

### 3.4 多语言与占位

- **TC-030**：未合并 locale 时，getText 可能回退为 key；合并 `financialSummaryLocales` 后展示中/英/繁标题
- **TC-031**：`missingValuePlaceholder` 自定义时，缺失金额展示该占位内容

### 3.5 展开/收起（继承自 PisellHierarchicalSummaryList）

- **TC-040**：点击 Total/Paid/Refund 行可展开/收起子项
- **TC-041**：Balance Due 无 children，不展示展开箭头

### 3.6 样式与视觉（人工/Storybook）

- **TC-050**：L1 标题与金额符合 Figma 标注（Bold 16px、金额 #1570EF）
- **TC-051**：L2 明细行符合 Figma 标注（Medium 16px、#000）
- **TC-052**：容器内边距 20px、行间距 8px

## 4. Bug 汇总

| 编号 | 描述 | 复现路径 | 严重程度 | 状态 | 备注 |
|------|------|----------|----------|------|------|
| - | - | - | - | - | - |
