将 web/tests/integration/server 目录的API集成测试迁移到 packages/server,并通过创建共享测试工具包实现代码复用。
packages/test-utilspackages/server/tests/integration/packages/test-utils/
├── package.json
├── src/
│ ├── index.ts
│ ├── server/
│ │ ├── integration-test-db.ts
│ │ ├── integration-test-utils.ts
│ │ ├── test-auth.ts
│ │ └── test-db.ts
│ └── client/
│ ├── test-query.tsx
│ ├── test-render.tsx
│ └── test-router.tsx
└── tsconfig.json
{
"name": "@d8d/test-utils",
"version": "1.0.0",
"type": "module",
"main": "./src/index.ts",
"types": "./src/index.ts",
"scripts": {
"build": "tsc",
"dev": "tsc --watch"
},
"dependencies": {
"@d8d/server": "workspace:*",
"@hono/node-server": "^1.13.0",
"@testing-library/react": "^14.1.2",
"@testing-library/jest-dom": "^6.1.4",
"@testing-library/user-event": "^14.5.1",
"@tanstack/react-query": "^5.8.4",
"react-router-dom": "^6.20.1",
"bcrypt": "^5.1.1",
"pg": "^8.11.3"
},
"devDependencies": {
"@types/bcrypt": "^5.0.2",
"@types/pg": "^8.10.9",
"typescript": "^5.3.3"
}
}
从 web/tests/utils/ 迁移以下文件:
integration-test-db.ts → packages/test-utils/src/server/integration-test-db.tsintegration-test-utils.ts → packages/test-utils/src/server/integration-test-utils.tstest-auth.ts → packages/test-utils/src/server/test-auth.tstest-db.ts → packages/test-utils/src/server/test-db.tstest-query.tsx → packages/test-utils/src/client/test-query.tsxtest-render.tsx → packages/test-utils/src/client/test-render.tsxtest-router.tsx → packages/test-utils/src/client/test-router.tsx调整所有工具类中的导入语句,使用workspace引用:
// 从
import { IntegrationTestDatabase } from '../../utils/integration-test-db';
// 改为
import { IntegrationTestDatabase } from '@d8d/test-utils/server/integration-test-db';
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
environment: 'node',
include: ['tests/**/*.test.ts'],
setupFiles: ['./tests/setup.ts'],
globals: true,
},
});
配置测试环境,包括数据库连接和全局设置。
添加测试脚本和依赖:
{
"scripts": {
"test": "vitest run",
"test:watch": "vitest",
"test:integration": "vitest run tests/integration/"
},
"devDependencies": {
"@d8d/test-utils": "workspace:*",
"vitest": "^1.2.2"
}
}
packages/server/tests/
├── integration/
│ ├── auth.integration.test.ts
│ ├── backup.integration.test.ts
│ ├── files/
│ │ ├── files.integration.test.ts
│ │ └── minio.integration.test.ts
│ └── users.integration.test.ts
└── setup.ts
从 web/tests/integration/server/ 迁移以下文件:
auth.integration.test.tsbackup.integration.test.tsfiles/files.integration.test.tsfiles/minio.integration.test.tsusers.integration.test.ts调整所有测试文件中的导入语句:
// 从
import { app } from '@d8d/server';
import { IntegrationTestDatabase } from '../../../utils/integration-test-db';
// 改为
import { app } from '../../src/app';
import { IntegrationTestDatabase } from '@d8d/test-utils/server/integration-test-db';
添加workspace引用:
{
"workspaces": [
"packages/*",
"packages/test-utils"
]
}
移除已迁移的服务器集成测试配置。
移除不再需要的测试工具依赖,添加对 @d8d/test-utils 的引用。
# 在 packages/server 中运行集成测试
cd packages/server && pnpm test:integration
# 在 web 中运行所有测试
cd web && pnpm test
删除 web/tests/integration/server/ 目录。
确保CI流程能够运行新的测试结构。
packages/server 中正常运行总计:7-10小时
任务创建者: Winston 🏗️ 创建时间: 2025-10-23 状态: 待执行