UNPKG

auto-request

Version:

通过Yapi JSON Schema生成接口Axios或Taro接口

233 lines (171 loc) 6.29 kB
# 测试用例说明 本目录包含了 auto-request 项目的测试用例,分为开发模式和构建模式两种。 ## 目录结构 ``` tests/ ├── base/ # 统一配置管理 │ ├── configs.js # 配置文件(所有测试共用) │ └── README.md # 配置说明文档 ├── dev/ # 开发模式测试(从 src 导入) │ ├── all-api.ts │ ├── kae.ts │ ├── open.ts │ └── usercenter.ts ├── build/ # 构建模式测试(从 dist 导入) │ ├── all-api.js │ ├── kae.js │ ├── open.js │ └── usercenter.js └── snapshots/ # 快照基准文件 └── before/ ``` ## 测试模式 ### 1. 开发模式测试 (tests/dev) - **测试文件**: TypeScript (`.ts`) - **导入源**: 从 `../../src/index` 导入 - **运行方式**: 使用 Babel 转译后运行 - **用途**: 开发过程中验证源码功能 ```bash # 运行开发模式测试 yarn dev:test # 或 node scripts/run-tests.js ``` ### 2. 构建模式测试 (tests/build) - **测试文件**: JavaScript (`.js`),使用 CommonJS 格式 - **导入源**: 从 `../../dist/bundle` 导入 - **运行方式**: 直接使用 Node.js 运行 - **用途**: 验证构建产物的正确性 ```bash # 运行构建模式测试 yarn build:test # 或 node scripts/run-tests.js --built ``` ## 统一配置管理 所有测试用例的配置统一在 `tests/base/configs.js` 中管理,确保: ✅ **配置一致性**`dev``build` 测试使用完全相同的配置 ✅ **易于维护**:修改配置只需在一处修改 ✅ **简单高效**:一个配置文件,所有测试共用 配置示例: ```javascript // tests/base/configs.js const allApiConfig = { filename: 'all-api', isTypeScript: true, loggerFileName: 'all-api.json', skipPrompt: true, }; ``` 使用配置(TypeScript 和 JavaScript 都用 `require`): ```typescript // tests/dev/all-api.ts 或 tests/build/all-api.js const { allApiConfig, getConfig } = require('./../base/configs'); const config = getConfig(allApiConfig, { loggerPath: path.join(__dirname, './logs/'), }); ``` ## 测试用例 每个测试用例对应一个 Swagger 示例项目,配置由 `tests/base/configs` 统一管理: 1. **all-api**: 大型项目测试,206 个接口,TypeScript 模式 2. **kae**: KAE 项目测试,57 个接口,TypeScript 模式,包含快照 3. **open**: 中型项目测试,44 个接口,JavaScript 模式,包含快照 4. **usercenter**: 小型项目测试,3 个接口,JavaScript 模式,包含快照 ## Swagger 数据源 所有测试用例共享 `example` 目录中的 Swagger JSON 文件: - `example/all-api/swagger.json` - `example/kae/swagger.json` - `example/open/swagger.json` - `example/usercenter/swagger.json` ## 生成输出 测试用例生成的 API 文件统一输出到对应的 `example` 目录下: - `example/all-api/api/` - all-api 生成的 API 代码 - `example/kae/api/` - kae 生成的 API 代码 - `example/open/api/` - open 生成的 API 代码 - `example/usercenter/api/` - usercenter 生成的 API 代码 ## 快照测试 快照测试用于确保代码重构后生成的 API 代码保持一致: ```bash # 运行快照对比 yarn test # 更新快照基准 yarn test:update ``` ## 添加新测试用例 ### 1. 准备 Swagger 数据`example` 目录下创建新的示例项目: ``` example/ └── your-project/ ├── swagger.json # Swagger 定义文件 └── api/ # API 输出目录 ``` ### 2. 创建开发模式测试`tests/dev/` 下创建 `your-project.ts````typescript import { autoRequest } from './../../src/index'; import path from 'path'; import yourApi from './../../example/your-project/swagger.json'; const generatorApi = (source, api, log) => { autoRequest(JSON.stringify(source) as any, api, { filename: 'index', isTypeScript: true, skipPrompt: true, }).then(({ write }) => { write(); }); }; generatorApi( yourApi, path.join(__dirname, './../../example/your-project/api/'), path.join(__dirname, './../../example/your-project/logs/') ); ``` ### 3. 创建构建模式测试`tests/build/` 下创建 `your-project.js````javascript const { autoRequest } = require('./../../dist/bundle'); const path = require('path'); const yourApi = require('./../../example/your-project/swagger.json'); const generatorApi = (source, api, log) => { autoRequest(JSON.stringify(source), api, { filename: 'index', isTypeScript: true, skipPrompt: true, }).then(({ write }) => { write(); }); }; generatorApi( yourApi, path.join(__dirname, './../../example/your-project/api/'), path.join(__dirname, './../../example/your-project/logs/') ); ``` ### 4. 运行测试 ```bash # 运行开发测试 yarn dev:test # 运行构建测试 yarn build:test ``` ## 注意事项 1. **开发测试使用 TypeScript**`tests/dev/*.ts` 文件使用 ES 模块语法和 TypeScript 类型 2. **构建测试使用 CommonJS**`tests/build/*.js` 文件使用 CommonJS 格式(`require`/`module.exports`3. **统一配置管理**:所有配置在 `tests/base/configs` 中管理,确保 `dev``build` 测试使用相同配置 4. **skipPrompt 参数**:所有测试配置默认设置 `skipPrompt: true` 以避免交互式提示 5. **共享 Swagger 数据**:测试文件从 `example` 目录读取 Swagger JSON,避免数据重复 6. **统一输出目录**:生成的 API 文件统一输出到 `example` 目录,方便快照对比 ## 故障排查 ### 问题:开发测试失败,提示 "Cannot use import statement" **原因**: Babel 未正确转译 TypeScript 文件 **解决**: 确保 `.erb/scripts/BabelRegister` 文件存在且配置正确 ### 问题:构建测试失败,提示 "Cannot find module" **原因**: 构建产物不存在或路径错误 **解决**: 先运行 `yarn build` 生成 `dist/bundle.js` ### 问题:测试通过但生成的代码不正确 **原因**: Swagger JSON 数据或配置参数有误 **解决**: 1. 检查 `example/*/swagger.json` 文件格式 2. 检查测试文件中的 `autoRequest` 配置参数 3. 运行 `yarn example` 手动验证单个示例