用途:为 Klaviyo 集成建立快速、可复现的本地开发循环,将三件事分离:延迟实例化的 SDK 客户端单例、不触网的模拟单元测试、以及由开关控制的实时集成测试(仅在 CI 运行)。
前提:已完成 klaviyo-install-auth 配置(提供私有 API 密钥);Node.js 18+ 且 PATH 中有 npm 或 pnpm;项目依赖已安装 klaviyo-api;开发依赖已安装 tsx 与 vitest。
主要步骤:1)项目结构,创建 src/klaviyo/ 存放 SDK 模块,tests/{unit,integration}/ 存放测试,密钥放在被 git 忽略的 .env.local,提交 .env.example。2)环境配置,定义 KLAVIYO_PRIVATE_KEY / KLAVIYO_PUBLIC_KEY,并配置 dev、test、test:watch、test:integration、typecheck 脚本。3)SDK 客户端单例,只读取一次密钥并缓存 ApiKeySession,导出按需的 API 访问器。4)用 vi.mock('klaviyo-api', ...) 模拟整个 SDK,使单元测试确定且离线。5)集成测试用 describe.skipIf(!process.env.KLAVIYO_TEST) 包裹,访问真实账户。6)热重载开发,一个终端运行 npm run dev(tsx watch),另一个运行 npm run test:watch。
输出:支持 tsx watch 热重载的开发环境、模拟 SDK 的单元测试、由 KLAVIYO_TEST=1 控制的集成测试、一致的客户端单例模式。
错误处理:KLAVIYO_PRIVATE_KEY not set 表示缺少 .env.local,可从 .env.example 复制;模拟类型错误可用 as any 处理枚举值;集成测试 429 表示 CI 中被限流,可加延迟或使用测试密钥;tsx not found 需执行 npm install -D tsx。
运行方式:npm run test 或 npm run test:watch;要访问实时 API,设置 KLAVIYO_TEST=1 后运行 npm run test:integration。
限制:资料未提供具体收费、平台支持范围与效果数据;集成测试需真实密钥并可能受速率限制。