测试 Piece
如何为 Piece 添加单元测试
测试 Piece 是可选的,但对于复杂逻辑是推荐的。可以使用 Vitest 配合框架中的 createMockActionContext 辅助函数来测试 Piece。
完整的可运行示例,请参见 text-helper piece 的 GitHub 测试。
设置
1. 为你的 Piece 添加 vitest
在 Piece 的 package.json 中添加 vitest 作为 dev 依赖项,并添加 test 脚本:
{
"scripts": {
"build": "tsc -p tsconfig.lib.json && cp package.json dist/",
"lint": "eslint 'src/**/*.ts'",
"test": "vitest run"
},
"devDependencies": {
"vitest": "3.0.8"
}
}
2. 创建 vitest 配置
在 Piece 根目录下创建 vitest.config.ts:
import path from 'path'
import { defineConfig } from 'vitest/config'
const repoRoot = path.resolve(__dirname, '../../../..')
export default defineConfig({
test: {
globals: true,
environment: 'node',
},
resolve: {
alias: {
'@activepieces/shared': path.resolve(repoRoot, 'packages/shared/src/index.ts'),
'@activepieces/pieces-framework': path.resolve(repoRoot, 'packages/pieces/framework/src/index.ts'),
'@activepieces/pieces-common': path.resolve(repoRoot, 'packages/pieces/common/src/index.ts'),
},
},
})
3. 编写测试
创建 test/ 目录并添加 .test.ts 文件:
import { createMockActionContext } from '@activepieces/pieces-framework';
import { myAction } from '../src/lib/actions/my-action';
describe('myAction', () => {
test('执行某些操作', async () => {
const ctx = createMockActionContext({
propsValue: {
inputField: '测试值',
},
});
const result = await myAction.run(ctx);
expect(result).toBe('期望的输出');
});
});
4. 运行测试
# 为特定 Piece 运行测试
npx turbo test --filter=@activepieces/piece-text-helper
# 从 Piece 目录直接运行测试
cd packages/pieces/core/text-helper
npx vitest run