enum-plus
Version:
A drop-in replacement for native enum. Like native enum but much better!
35 lines (24 loc) • 2.2 kB
Markdown
# EnumPlus 单元测试指南
## 概述
本文档提供了在 EnumPlus 项目中使用 Jest 和 Playwright 编写测试的指南。目标是确保单元测试和端到端(E2E)测试共享一个公共代码库,同时适应两种测试框架之间的差异。
## 测试框架
- **Jest**:用于在 Node.js 环境中进行单元测试。
- **Playwright**:用于在浏览器环境中进行端到端(E2E)测试。
## 测试结构
每个测试分为两个主要部分:`evaluate` 和 `assert`。
- **Evaluate**:这一部分包含运行实际测试逻辑的代码。它应该是可序列化的,不依赖于闭包或外部状态。
- **Assert**:这一部分包含验证测试结果的断言。它也应该是可序列化的。
## 编写测试的指南
1. **序列化**:确保 `evaluate` 和 `assert` 部分都是可序列化的。避免使用闭包或无法序列化的外部状态。
2. **避免闭包**:尽量减少在 `evaluate` 部分使用闭包。如果闭包是必要的,请将它们包含在 `evaluate` 函数的返回值中,以确保它们在 `assert` 部分可访问。
3. **外部数据**:使用外部数据(例如 enum-plus、config、data)时,确保它与浏览器环境兼容。这可能涉及将数据编译到 `e2e` 目录中。
4. **一致的 API**:为 Jest 和 Playwright 测试使用一致的 API,以促进代码共享和维护。
5. **测试命名**:使用描述性的名称为测试命名,以清楚地表明它们的目的和功能。
6. **文档**:记录测试设计用来覆盖的任何特定行为或边缘情况。
7. **代码覆盖率**:确保测试覆盖了代码库中的关键路径和边缘情况。使用覆盖率工具来识别未覆盖的代码区域。代码覆盖率要求达到`100%`。
<!-- 1. jest和playwright复用一套代码
2. 所以在单元测试编写时还是有点区别
1. test分为evaluate和assert两个部分
2. 两个方法的入参和返回值都需要可序列化
3. 尽量不使用闭包,如果必须要使用的话,请添加到evaluate的返回值中
4. 用到的外部数据(例如enum-plus、config、data)等,需要考虑到浏览器端,需要编译到e2e目录中 -->