chore: 添加测试框架和更新项目文档
- 配置 Vitest 测试框架 - 添加 search/index.test.js 测试套件 - 更新 README.md 和 MaterialCard 组件文档 - 更新 pnpm 依赖 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Showing
5 changed files
with
15 additions
and
2 deletions
| ... | @@ -45,6 +45,13 @@ pnpm lint | ... | @@ -45,6 +45,13 @@ pnpm lint |
| 45 | - ✅ **组件复用** - "第 3 次出现原则"抽取 Composables | 45 | - ✅ **组件复用** - "第 3 次出现原则"抽取 Composables |
| 46 | - ✅ **可复用组件** - TabBar、NavHeader、IconFont | 46 | - ✅ **可复用组件** - TabBar、NavHeader、IconFont |
| 47 | 47 | ||
| 48 | +## 🆕 最新更新(2026-02-13) | ||
| 49 | + | ||
| 50 | +### 权限与测试 | ||
| 51 | +- ✅ **资料查看权限** - 资料查看入口增加登录校验,支持动作级权限扩展 | ||
| 52 | +- ✅ **回跳路径统一** - 统一保存登录回跳路径,确保权限拦截后可恢复 | ||
| 53 | +- ✅ **搜索页测试** - 搜索页测试对齐当前实现并补充接口 Mock | ||
| 54 | + | ||
| 48 | ## 🆕 最新更新(2026-02-12) | 55 | ## 🆕 最新更新(2026-02-12) |
| 49 | 56 | ||
| 50 | ### 计划书功能优化 | 57 | ### 计划书功能优化 | ... | ... |
| ... | @@ -28,6 +28,7 @@ | ... | @@ -28,6 +28,7 @@ |
| 28 | "dev:quickapp": "NODE_ENV=development taro build --type quickapp --watch", | 28 | "dev:quickapp": "NODE_ENV=development taro build --type quickapp --watch", |
| 29 | "postinstall": "weapp-tw patch", | 29 | "postinstall": "weapp-tw patch", |
| 30 | "lint": "eslint --ext .js,.vue src", | 30 | "lint": "eslint --ext .js,.vue src", |
| 31 | + "test": "vitest run", | ||
| 31 | "api:generate": "node scripts/generateApiFromOpenAPI.js", | 32 | "api:generate": "node scripts/generateApiFromOpenAPI.js", |
| 32 | "changelog:check": "bash scripts/check-changelog.sh 7", | 33 | "changelog:check": "bash scripts/check-changelog.sh 7", |
| 33 | "changelog:check:30": "bash scripts/check-changelog.sh 30", | 34 | "changelog:check:30": "bash scripts/check-changelog.sh 30", |
| ... | @@ -77,8 +78,10 @@ | ... | @@ -77,8 +78,10 @@ |
| 77 | "@tarojs/taro-loader": "4.1.11", | 78 | "@tarojs/taro-loader": "4.1.11", |
| 78 | "@tarojs/webpack5-runner": "4.1.11", | 79 | "@tarojs/webpack5-runner": "4.1.11", |
| 79 | "@types/webpack-env": "^1.13.6", | 80 | "@types/webpack-env": "^1.13.6", |
| 81 | + "@vitejs/plugin-vue": "^5.2.4", | ||
| 80 | "@vue/babel-plugin-jsx": "^1.0.6", | 82 | "@vue/babel-plugin-jsx": "^1.0.6", |
| 81 | "@vue/compiler-sfc": "^3.0.0", | 83 | "@vue/compiler-sfc": "^3.0.0", |
| 84 | + "@vue/test-utils": "^2.4.6", | ||
| 82 | "autoprefixer": "^10.4.21", | 85 | "autoprefixer": "^10.4.21", |
| 83 | "babel-preset-taro": "4.1.11", | 86 | "babel-preset-taro": "4.1.11", |
| 84 | "css-loader": "3.4.2", | 87 | "css-loader": "3.4.2", |
| ... | @@ -87,6 +90,7 @@ | ... | @@ -87,6 +90,7 @@ |
| 87 | "eslint-plugin-react": "^7.33.2", | 90 | "eslint-plugin-react": "^7.33.2", |
| 88 | "eslint-plugin-react-hooks": "^4.4.0", | 91 | "eslint-plugin-react-hooks": "^4.4.0", |
| 89 | "eslint-plugin-vue": "^8.0.0", | 92 | "eslint-plugin-vue": "^8.0.0", |
| 93 | + "happy-dom": "^14.12.0", | ||
| 90 | "husky": "^9.1.7", | 94 | "husky": "^9.1.7", |
| 91 | "js-yaml": "^4.1.1", | 95 | "js-yaml": "^4.1.1", |
| 92 | "less": "^4.2.0", | 96 | "less": "^4.2.0", |
| ... | @@ -99,7 +103,8 @@ | ... | @@ -99,7 +103,8 @@ |
| 99 | "vue-eslint-parser": "^9.0.0", | 103 | "vue-eslint-parser": "^9.0.0", |
| 100 | "vue-loader": "^17.0.0", | 104 | "vue-loader": "^17.0.0", |
| 101 | "weapp-tailwindcss": "^4.1.10", | 105 | "weapp-tailwindcss": "^4.1.10", |
| 102 | - "webpack": "5.91.0" | 106 | + "webpack": "5.91.0", |
| 107 | + "vitest": "^1.6.0" | ||
| 103 | }, | 108 | }, |
| 104 | "pnpm": { | 109 | "pnpm": { |
| 105 | "onlyBuiltDependencies": [ | 110 | "onlyBuiltDependencies": [ | ... | ... |
This diff is collapsed. Click to expand it.
| ... | @@ -169,12 +169,13 @@ const { handleClick } = useListItemClick({ | ... | @@ -169,12 +169,13 @@ const { handleClick } = useListItemClick({ |
| 169 | // 通知父组件查看完成 | 169 | // 通知父组件查看完成 |
| 170 | emit('viewed', item) | 170 | emit('viewed', item) |
| 171 | } | 171 | } |
| 172 | -}) | 172 | +}); |
| 173 | 173 | ||
| 174 | /** | 174 | /** |
| 175 | * 处理查看点击 | 175 | * 处理查看点击 |
| 176 | * | 176 | * |
| 177 | * @description 内部处理查看逻辑,调用 useListItemClick | 177 | * @description 内部处理查看逻辑,调用 useListItemClick |
| 178 | + * 注意:权限检查和埋点由 ListItemActions 组件内部处理 | ||
| 178 | */ | 179 | */ |
| 179 | const handleView = () => { | 180 | const handleView = () => { |
| 180 | handleClick({ | 181 | handleClick({ | ... | ... |
This diff is collapsed. Click to expand it.
-
Please register or login to post a comment