测试与部署 Vue 2 应用
pnpm tutorial:dev v2-07 --locale zh源码examples/tutorials/v2-07-test-and-deploy/一个 Vue 2 接入可以部署,至少要满足三件事:没有模型时业务路径仍能工作;已声明的路径可以确定性测试;生产构建中没有供应商凭证。助手不能替代这些检查。
区分确定性测试与模型测试
当测试直接检查注册表、执行器和 Vue 处理函数时,使用 createReplayLlm([]):
const app = mountRecordsApp(host, {
agent: { llm: createReplayLlm([]) },
presence: false,
onWarn: () => {},
});
const executor = createExecutor({
registry: app.pling.registry,
policy: createPolicy(async () => true),
});这类测试不需要网络,回答的是:
- 行内动作是否落到预期的记录?
- 填充输入框是否会触发原有 Vue 处理函数?
- 弹窗关闭后,它的动作是否被移除?
- 前置条件不成立时,页面是否保持不变?
真实模型或网关应放在另一组显式配置的测试中。不要让普通 CI 依赖模型可用性、提示词措辞或供应商账号。
测试接入契约
示例包含一个小型部署契约测试:检查浏览器源码中没有供应商密钥,并确认包仍有生产构建和确定性测试命令。这个检查范围很窄,但能拦住危险的发布错误。
更完整的发布检查还应覆盖:
| 检查 | 保护什么 |
|---|---|
| 类型检查 | 指令参数和适配器导入保持有效 |
| 单元测试 | 注册表、记录、区域与处理函数仍然一致 |
| 生产构建 | 部署包能解析所有依赖 |
| 权限策略 | 只存在预期能力 |
| 网关配置 | 凭证留在服务端 |
| 浏览器冒烟 | 部署后页面和入口能够挂载 |
构建并托管产物
运行宿主会使用的同一条构建命令:
pnpm build如果静态产物部署在子目录,应把 Vite 的 base 设为对应路径。示例使用相对路径,避免生成的资源链接假定站点根目录:
export default defineConfig({
base: "./",
});如果应用使用客户端路由,服务器还必须为该应用拥有的路由返回入口页面。这属于托管配置,不是 Pling 声明。
把模型边界留在服务端
浏览器可以包含界面、能力声明和发往网关的请求,但不应该包含生产供应商密钥。网关负责认证、限流、请求上限、日志和该部署所需的供应商凭证。
登录后再创建入口也一样。认证改变谁可以打开入口,不会让浏览器 JavaScript 里的密钥变得安全。
运行示例
pnpm tutorial:dev v2-07打开 http://127.0.0.1:5268/,或使用 --locale zh 和 http://127.0.0.1:5268/?lang=zh。
pnpm tutorial:check v2-07检查会类型检查应用,运行确定性的记录与弹窗测试,运行部署契约测试,并生成生产构建。
常见问题
只通过真实模型测试顺利路径。 模型输出会变化。先确定性测试注册表和业务路径,再单独测试模型边界。
构建成功就认为密钥安全。 成功打包的产物仍可能包含密钥。发布审查应检查源码和生成资源。
部署后不做冒烟测试。 应挂载线上页面、打开助手,并确认一个无害动作正常,再扩大能力范围。
下一步:从 Vue 2 迁移到 Vue 3。

