/add-tests [dir] - 为指定模块或文件添加单元测试
[dir] 可选参数:包名(以 @ 开头)、文件路径或目录路径[dir] 则默认为全代码库(会提示用户确认)此命令用于自动生成和补充单元测试,确保代码质量。FlowGram 使用 Vitest 作为测试框架。
根据包的类型和重要性,测试覆盖率要求如下:
核心引擎层(canvas-engine、node-engine、variable-engine、runtime)
插件和客户端层(plugins、client)
工具和示例(common、apps)
__tests__/ 目录(推荐)*.test.ts/*.test.tsx 文件src/core/utils.ts,测试文件为 __tests__/core/utils.test.ts 或 src/core/utils.test.ts确认范围:
[dir],询问用户是否要对全代码库操作,还是指定具体目录选择模式:
增量代码模式:
# 检查 git diff 获取所有修改的文件
git diff --name-only
git diff <file> # 查看具体变更
存量代码模式:
package.json 获取包名rush.json 中查找包的分类(projectFolder)packages/canvas-engine/、packages/node-engine/、packages/variable-engine/、packages/runtime/ → 85%packages/plugins/、packages/client/ → 60%packages/common/、apps/ → 尽可能覆盖测试重点:
Vitest 最佳实践:
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
import { render, screen } from '@testing-library/react';
describe('ModuleName', () => {
beforeEach(() => {
// 初始化
});
it('should handle specific case', () => {
// 测试逻辑
expect(result).toBe(expected);
});
});
React 组件测试:
@testing-library/react 进行组件测试data-testid 属性依赖注入测试:
vi.mock() 模拟依赖单包测试:
cd packages/canvas-engine/core
rushx test # 运行测试
rushx test:cov # 生成覆盖率报告
全局测试:
rush test # 运行所有包的测试
rush test:cov # 生成所有包的覆盖率报告
每次添加测试后:
__tests__/ 目录(优先)或源文件同级# 为某个包添加测试(执行后会询问增量或存量)
/add_tests @flowgram.ai/core
# 为特定目录添加测试
/add_tests packages/node-engine/form
# 为单个文件添加测试
/add_tests packages/canvas-engine/core/src/core/utils.ts
# 全代码库测试(会先确认范围,再询问增量或存量)
/add_tests
场景 1:为新功能添加测试
/add_tests packages/plugins/my-new-plugin
# 选择:增量代码测试
# 结果:仅为 git diff 中的新代码生成测试
场景 2:提升现有包的测试覆盖率
/add_tests @flowgram.ai/variable-core
# 选择:存量代码测试补齐
# 结果:扫描所有代码,补齐缺失的测试,目标 85% 覆盖率
场景 3:全面测试检查
/add_tests
# 确认:选择要处理的目录或全代码库
# 选择:存量代码测试补齐
# 结果:系统性地补齐整个项目的测试
/add_tests [dir]开始生成测试吧!