> 目前正在推进 tdesign-mobile-react 的组件库的测试覆盖率提升、组件 API 功能自查和组件示例视觉还原走查。 ## 组件库概况 - 组件数:63 ## 任务说明 > 具体有以下 3 个点: ### 1. 测试覆盖率提升 > 标准如下 - **行覆盖率达 95%+** - **分支覆盖率 95%+** - **语句覆盖率 95%+** - 有交互的组件,需要覆盖所有场景,**要求函数覆盖率 95+%** ### 2. 组件 API 功能自查 - Mobile React 正处于快速迭代阶段,组件 API 功能存在不稳定性或者功能实现有误,需对每个组件功能点撰写单元测试,进行**功能自查然后修复** ### 3. 组件示例视觉还原自查 > figma 地址:https://www.figma.com/design/jivYXTMTP3jEkeZXWbMh4J/branch/4SdclZkcv5bPgX6pa8AsmI/TDesign-for-mobile?node-id=750-23479&p=f&m=dev - 对齐视觉 ## 如何开始? ### 认领任务 认领方式:直接评论 “我来负责 xxx 组件” 即可。 ### 单元测试 #### Tips - Vitest 单元测试框架:[文档](https://cn.vitest.dev/guide/) - 若开发工具为 vscode ,可以安装 Vitest 插件 - 若开发工具为 WebStorm,可以安装 Vitest Runner 插件 #### 1. 创建单元测试文件 and 文件命名规则 - 测试文件统一放置在对应组件目录下的 `__tests__` 文件夹中。 - 命名规则: - 组件测试文件:`[组件名].test.tsx`,例如 `form.test.tsx`。 - 多子组件场景:每个子组件单独编写测试文件,例如 `form.test.tsx` 和 `form-item.test.tsx`。 - 组件内部 hooks 测试文件:`[组件名].hooks.test.tsx`,例如 `form.hooks.test.tsx`。 - 组件内部 utils 测试文件:同 hooks 规则,例如 `form.utils.test.tsx`。 #### 2. 编写单元测试 单元测试应覆盖组件以下内容: - 组件本身的功能和行为。 - 组件内部的 hooks(自定义 Hook)。 - 组件内部的 utils(工具函数)。 组件测试文件按照 props、events、slots 进行,格式如下: ``` describe('DropdownMenu', () => { describe('props', () => { it(':style', () => {}) }) describe('event', () => { it(':click', () => {}) }) describe('slots', () => { it(':default', () => {}) }) }) ``` > 可参考:https://github.com/Tencent/tdesign-mobile-react/blob/develop/src/badge/__tests__/index.test.tsx #### 3. 检测测试用例 如果写的是 Button 组件的测试用例,可通过命令行,单独执行 Button 组件的测试用例,减少运行时间,如下所示。 ```bash npm run test:unit button ``` #### 4. 查看单元测试覆盖率 确认测试用例通过后,可通过命令行,查看测试覆盖率。 > 红色部分表示完全没有覆盖的语句,黄色表示分支未覆盖,绿色表示覆盖,绿色的文字表示执行的次数 ```bash npm run test:unit-gui npm run test:unit-gui button --coverage //指定组件 ``` #### 5. 现有测试用例的优化 - 已有部分测试用例的组件,在补充新用例的同时,辛苦顺便对现有测试用例进行优化一下 - 优化内容包括但不限于: - 补充遗漏的分支和函数调用。 - 按照上述命名和存放规范调整测试文件结构。 - 提升测试用例的可读性和覆盖率。 #### 6. 更新组件测试覆盖率徽标 ```bash npm run generate:coverage-badge ``` ### 提交代码 恭喜你,成功完成一份单元测试,往更专业的前端更进一步!! > 如果更新了组件 demo,需要更新 snapshot ```bash npm run test:demo npm run test:snap-update ``` ## 激励 参与共建的开发者,将可以获得 [TDesign 周边](https://github.com/Tencent/tdesign/wiki/TDesign-%E5%91%A8%E8%BE%B9)(贴纸、鼠标垫、工卡套等); 成为核心贡献者,将会拥有 TDesign 专属头像。 ## 具体进展 ### 基础 5 - [x] Button #710 - [x] Divider #735 - [ ] Fab - [x] Layout #749 - [x] Link #709 ### 导航 8 - [x] BackTop #791 - [x] Drawer #767 - [ ] Indexes - [x] NavBar #863 - [x] SideBar #776 - [x] Steps #761 - [x] TabBar #819 - [x] Tabs #864 ### 输入 17 - [x] Calendar #755 - [ ] Cascader - [x] Checkbox #748 - [x] ColorPicker #783 - [x] DateTimePicker #806 - [ ] Form - [x] Input #768 - [ ] Picker - [x] Radio #736 - [x] Rate #754 - [ ] Search #784 - [x] Slider #787 - [ ] Stepper - [x] Switch #744 - [x] Textarea #745 - [ ] TreeSelect #778 - [ ] Upload #807 ### 数据展示 19 - [x] Avatar #747 - [x] Badge #730 - [x] Cell #737 - [ ] Collapse - [x] CountDown #781 - [x] Empty #729 - [x] Footer #727 - [ ] Grid - [x] Image #769 - [ ] ImageViewer #808 - [ ] List #790 - [x] Progress #728 - [x] QRCode #731 - [x] Result #743 - [x] Skeleton #726 - [ ] Sticky - [ ] Swiper #803 - [x] Table #751 - [x] Tag #788 ### 消息提醒 13 - [x] ActionSheet #789 #777 - [x] Dialog #780 - [x] DropdownMenu #762 - [x] Guide #805 - [x] Loading #724 - [x] Message #779 - [ ] NoticeBar - [x] Overlay #741 - [x] Popover #782 - [x] Popup #732 - [x] PullDownRefresh #774 - [x] SwipeCell #810 - [x] Toast #705 #734
组件库概况
任务说明
1. 测试覆盖率提升
2. 组件 API 功能自查
3. 组件示例视觉还原自查
如何开始?
认领任务
认领方式:直接评论 “我来负责 xxx 组件” 即可。
单元测试
Tips
1. 创建单元测试文件 and 文件命名规则
__tests__文件夹中。[组件名].test.tsx,例如form.test.tsx。form.test.tsx和form-item.test.tsx。[组件名].hooks.test.tsx,例如form.hooks.test.tsx。form.utils.test.tsx。2. 编写单元测试
单元测试应覆盖组件以下内容:
组件测试文件按照 props、events、slots 进行,格式如下:
3. 检测测试用例
如果写的是 Button 组件的测试用例,可通过命令行,单独执行 Button 组件的测试用例,减少运行时间,如下所示。
4. 查看单元测试覆盖率
确认测试用例通过后,可通过命令行,查看测试覆盖率。
5. 现有测试用例的优化
6. 更新组件测试覆盖率徽标
提交代码
恭喜你,成功完成一份单元测试,往更专业的前端更进一步!!
激励
参与共建的开发者,将可以获得 TDesign 周边(贴纸、鼠标垫、工卡套等);
成为核心贡献者,将会拥有 TDesign 专属头像。
具体进展
基础 5
导航 8
输入 17
数据展示 19
Image组件示例对齐 #769消息提醒 13