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

﻿# PisellPhone 组件测试用例文档

## 1 测试概述

### 1.1 测试目标

确保 PisellPhone 组件的功能完整性、稳定性和用户体验，特别是电话号码特有功能（国家码选择、格式化、拨号、脱敏）。

### 1.2 测试范围

- 三种状态模式（只读、编辑、禁用）
- 国家码选择和配置（预设24国、过滤、置顶、自定义）
- 电话号码格式化（多国格式）
- 格式校验（长度、正则）
- 拨号功能（移动端）
- 号码脱敏
- 受控/非受控模式

### 1.3 测试方法

- 使用 Storybook 进行可视化测试
- 人工测试：UI 交互、国家码选择、格式化、拨号功能验证

## 2 核心功能测试点

### 2.1 基础功能测试

#### 测试点 1：组件正常渲染

- **测试描述**：组件应该能够正常渲染
- **预期结果**：组件渲染成功，无报错
- **测试状态**：待测试 ⏳

#### 测试点 2：默认为编辑态

- **测试描述**：不传 mode 时，默认应为编辑态
- **预期结果**：渲染国家码选择器 + 输入框
- **测试状态**：待测试 ⏳

### 2.2 国家码选择测试（核心）

#### 测试点 3：国家码选择器显示

- **测试步骤**：
  1. 设置 showCountrySelector=true
  2. 点击国家码下拉框
  3. 观察选项列表
- **预期结果**：
  - 显示24个预设国家
  - 每项显示：国旗 + 国家码 + 国家名称
  - 支持搜索功能
- **测试状态**：待测试 ⏳

#### 测试点 4：国家码过滤

- **测试步骤**：
  1. 设置 availableCountryCodes=['+86', '+1', '+44']
  2. 打开国家码下拉框
- **预期结果**：
  - 只显示指定的3个国家
  - 其他国家不显示
- **测试状态**：待测试 ⏳

#### 测试点 5：常用国家置顶

- **测试步骤**：
  1. 设置 commonCountryCodes=['+86', '+1']
  2. 打开国家码下拉框
- **预期结果**：
  - +86 和 +1 显示在列表顶部
  - 其他国家按原顺序显示在下面
- **测试状态**：待测试 ⏳

#### 测试点 6：国家码切换

- **测试步骤**：
  1. 选择 +86（中国）
  2. 输入11位号码
  3. 切换到 +1（美国）
- **预期结果**：
  - maxLength 自动更新为10
  - 格式化规则自动切换
  - 触发 onCountryCodeChange 回调
- **测试状态**：待测试 ⏳

### 2.3 格式化测试

#### 测试点 7：中国手机号格式化

- **测试步骤**：
  1. 选择 +86
  2. 输入 13800000000
- **预期结果**：
  - 显示为 "138 0000 0000"
  - 保留空格分隔
- **测试状态**：待测试 ⏳

#### 测试点 8：美国号码格式化

- **测试步骤**：
  1. 选择 +1
  2. 输入 5551234567
- **预期结果**：
  - 显示为 "(555) 123-4567"
- **测试状态**：待测试 ⏳

#### 测试点 9：自动格式化开关

- **测试步骤**：
  1. 设置 autoFormat=false
  2. 输入号码
- **预期结果**：
  - 不进行格式化，保持纯数字
- **测试状态**：待测试 ⏳

#### 测试点 10：只保留数字输入

- **测试步骤**：
  1. 输入 "abc123def456"
- **预期结果**：
  - 只保留 "123456"
  - 自动移除非数字字符
- **测试状态**：待测试 ⏳

### 2.4 校验测试

#### 测试点 11：必填校验

- **测试步骤**：
  1. 设置 required=true
  2. 输入框为空时失焦
- **预期结果**：
  - 显示 "请输入电话号码"
- **测试状态**：待测试 ⏳

#### 测试点 12：格式校验（中国）

- **测试步骤**：
  1. 设置 countryCode='+86'
  2. 输入 "12345678"（8位，错误）
- **预期结果**：
  - 显示 "电话号码应为 11 位"
- **测试状态**：待测试 ⏳

#### 测试点 13：格式校验（美国）

- **测试步骤**：
  1. 设置 countryCode='+1'
  2. 输入 "123456"（6位，错误）
- **预期结果**：
  - 显示 "电话号码应为 10 位"
- **测试状态**：待测试 ⏳

#### 测试点 14：关闭格式校验

- **测试步骤**：
  1. 设置 validateFormat=false
  2. 输入任意位数号码
- **预期结果**：
  - 不进行格式校验
  - 只进行必填等基础校验
- **测试状态**：待测试 ⏳

### 2.5 拨号功能测试

#### 测试点 15：移动端拨号

- **测试步骤**：
  1. 在移动设备上打开
  2. mode="read", value="13800000000"
  3. 点击号码
- **预期结果**：
  - 号码带下划线（可点击样式）
  - 点击后唤起拨号界面
  - URL 为 "tel:+8613800000000"
- **测试状态**：待测试 ⏳（需要移动设备）

#### 测试点 16：PC端不拨号

- **测试步骤**：
  1. 在PC上打开
  2. mode="read", value="13800000000"
- **预期结果**：
  - 号码无下划线
  - 不可点击
- **测试状态**：待测试 ⏳

#### 测试点 17：拨号图标

- **测试步骤**：
  1. 设置 showDialIcon=true（移动端）
  2. 观察显示
- **预期结果**：
  - 显示拨号图标按钮
  - 点击可拨号
- **测试状态**：待测试 ⏳

### 2.6 脱敏功能测试

#### 测试点 18：中间脱敏

- **测试步骤**：
  1. mode="read"
  2. value="13800000000"
  3. enableMasking=true, maskPattern="middle"
- **预期结果**：
  - 显示 "138****0000"
- **测试状态**：待测试 ⏳

#### 测试点 19：末尾脱敏

- **测试步骤**：
  1. maskPattern="last"
- **预期结果**：
  - 显示 "1380000****"
- **测试状态**：待测试 ⏳

#### 测试点 20：脱敏优先级

- **测试步骤**：
  1. 同时设置 enableMasking=true 和 autoFormat=true
- **预期结果**：
  - 脱敏优先，显示脱敏后的号码
  - 不进行格式化
- **测试状态**：待测试 ⏳

### 2.7 只读态展示测试

#### 测试点 21：国旗图标显示

- **测试步骤**：
  1. mode="read", showFlag=true
  2. countryCode="+86"
- **预期结果**：
  - 显示 🇨🇳 图标
- **测试状态**：待测试 ⏳

#### 测试点 22：隐藏国旗

- **测试步骤**：
  1. showFlag=false
- **预期结果**：
  - 不显示国旗图标
- **测试状态**：待测试 ⏳

### 2.8 边界情况测试

#### 测试点 23：空值处理

- **测试步骤**：
  1. value="" 或 undefined
- **预期结果**：
  - 不报错，显示为空
- **测试状态**：待测试 ⏳

#### 测试点 24：超长号码

- **测试步骤**：
  1. 输入超过 maxLength 的号码
- **预期结果**：
  - 自动截断，不允许超出
- **测试状态**：待测试 ⏳

#### 测试点 25：不同国家码相同号码

- **测试步骤**：
  1. 美国和加拿大都是 +1
  2. 测试两者的区分
- **预期结果**：
  - 正确显示国家名称
  - 格式化规则相同
- **测试状态**：待测试 ⏳

## 3 性能测试

#### 测试点 26：国家码切换性能

- **测试方法**：频繁切换国家码
- **性能指标**：切换流畅，< 5ms
- **测试状态**：待测试 ⏳

#### 测试点 27：大量组件渲染

- **测试方法**：渲染50个组件
- **性能指标**：正常渲染，不卡顿
- **测试状态**：待测试 ⏳

## 4 兼容性测试

#### 测试点 28：移动端兼容性

- **测试设备**：iOS、Android
- **预期结果**：拨号功能正常
- **测试状态**：待测试 ⏳

#### 测试点 29：浏览器兼容性

- **测试浏览器**：Chrome、Firefox、Safari、Edge
- **预期结果**：所有功能正常
- **测试状态**：待测试 ⏳

## 5 测试覆盖率要求

### 5.1 功能覆盖率

- **状态模式**：100%（3/3）
- **国家码配置**：100%（默认/过滤/置顶/自定义）
- **格式化**：100%（中国/美国/英国等）
- **校验**：100%（必填/格式/自定义）
- **拨号**：100%（移动端/PC端）
- **脱敏**：100%（中间/末尾/自定义）

### 5.2 重点测试项

1. ✅ **国家码选择**：PisellPhone 的核心特性
2. ✅ **自动格式化**：多国格式支持
3. ✅ **格式校验**：根据国家码自动校验
4. ✅ **拨号功能**：移动端特有功能
5. ✅ **号码脱敏**：隐私保护

---

## 6 Bug 汇总模块

### 已发现的 Bug 列表

> 暂无 Bug

### 已修复的 Bug 列表

> 暂无已修复 Bug

---

**说明**：

- 人工测试时发现的 Bug 请记录在此模块
- Bug 修复后请更新状态和修复时间
