refactor: 清理测试代码 eslint-disable 指令,消除文件级和重复局部禁用
This commit is contained in:
@@ -124,3 +124,26 @@
|
||||
#### Scenario: 完整验证失败
|
||||
- **WHEN** `verify` 中任一阶段失败
|
||||
- **THEN** `verify` MUST 以非零状态退出且不能继续声明验证成功
|
||||
|
||||
### Requirement: 测试代码 ESLint 禁用最小化
|
||||
项目测试代码 SHALL 优先通过类型化 helper、类型化 mock、显式 no-op 和受控断言模式满足已启用的 ESLint 类型感知规则。受本变更审计的项目自有测试文件 MUST NOT 保留用于压制可通过代码结构解决的 `eslint-disable` 指令。
|
||||
|
||||
#### Scenario: 消除组件测试文件级禁用
|
||||
- **WHEN** ESLint 检查 `tests/web/components/App.test.tsx`
|
||||
- **THEN** 该文件 MUST 不使用文件级 `eslint-disable` 关闭 `@typescript-eslint/no-require-imports` 或 `@typescript-eslint/no-unsafe-*` 规则,并且测试中的 hook mock SHALL 使用类型化引用或等价方式访问 mock API
|
||||
|
||||
#### Scenario: 消除配置加载测试重复 await 禁用
|
||||
- **WHEN** `tests/server/checker/config-loader.test.ts` 断言 `loadConfig()` 异步失败
|
||||
- **THEN** 测试 SHALL 使用 helper 或显式 try/catch 断言错误实例与消息,MUST 不通过逐行 `eslint-disable-next-line @typescript-eslint/await-thenable` 压制 Bun `expect(...).rejects` 类型不匹配
|
||||
|
||||
#### Scenario: 测试环境 no-op polyfill 保持可解释
|
||||
- **WHEN** `tests/setup.ts` 为 jsdom 测试环境定义浏览器 API polyfill
|
||||
- **THEN** intentional no-op SHALL 使用显式可解释写法表达,MUST 不通过文件级 `eslint-disable @typescript-eslint/no-empty-function` 关闭空函数检查
|
||||
|
||||
#### Scenario: release 测试拦截 process.exit 保持窄作用域
|
||||
- **WHEN** `tests/scripts/release.test.ts` 验证无效 release target 会触发 `process.exit(1)`
|
||||
- **THEN** 测试 SHALL 使用受控 mock 或等价窄作用域替换并在断言后恢复,MUST 不通过 `eslint-disable-next-line @typescript-eslint/unbound-method` 保存未绑定方法
|
||||
|
||||
#### Scenario: 质量门禁验证禁用清理
|
||||
- **WHEN** 开发者运行 `bun run lint`
|
||||
- **THEN** ESLint MUST 检查项目自有测试代码并在无上述 `eslint-disable` 指令的情况下通过
|
||||
|
||||
Reference in New Issue
Block a user