Skip to content

测试与部署 Vue 2 应用 ​

可运行示例在浏览器中运行本章示例

这里运行与本地夹具相同的 Vue 2.7 源码。模型请求由服务端网关转发,供应商密钥不会进入浏览器。

本地运行pnpm tutorial:dev v2-07 --locale zh源码examples/tutorials/v2-07-test-and-deploy/

一个 Vue 2 接入可以部署,至少要满足三件事:没有模型时业务路径仍能工作;已声明的路径可以确定性测试;生产构建中没有供应商凭证。助手不能替代这些检查。

区分确定性测试与模型测试 ​

当测试直接检查注册表、执行器和 Vue 处理函数时,使用 createReplayLlm([]):

ts
const app = mountRecordsApp(host, {
  agent: { llm: createReplayLlm([]) },
  presence: false,
  onWarn: () => {},
});

const executor = createExecutor({
  registry: app.pling.registry,
  policy: createPolicy(async () => true),
});

这类测试不需要网络,回答的是:

  • 行内动作是否落到预期的记录?
  • 填充输入框是否会触发原有 Vue 处理函数?
  • 弹窗关闭后,它的动作是否被移除?
  • 前置条件不成立时,页面是否保持不变?

真实模型或网关应放在另一组显式配置的测试中。不要让普通 CI 依赖模型可用性、提示词措辞或供应商账号。

测试接入契约 ​

示例包含一个小型部署契约测试:检查浏览器源码中没有供应商密钥,并确认包仍有生产构建和确定性测试命令。这个检查范围很窄,但能拦住危险的发布错误。

更完整的发布检查还应覆盖:

检查保护什么
类型检查指令参数和适配器导入保持有效
单元测试注册表、记录、区域与处理函数仍然一致
生产构建部署包能解析所有依赖
权限策略只存在预期能力
网关配置凭证留在服务端
浏览器冒烟部署后页面和入口能够挂载

构建并托管产物 ​

运行宿主会使用的同一条构建命令:

bash
pnpm build

如果静态产物部署在子目录,应把 Vite 的 base 设为对应路径。示例使用相对路径,避免生成的资源链接假定站点根目录:

ts
export default defineConfig({
  base: "./",
});

如果应用使用客户端路由,服务器还必须为该应用拥有的路由返回入口页面。这属于托管配置,不是 Pling 声明。

把模型边界留在服务端 ​

浏览器可以包含界面、能力声明和发往网关的请求,但不应该包含生产供应商密钥。网关负责认证、限流、请求上限、日志和该部署所需的供应商凭证。

登录后再创建入口也一样。认证改变谁可以打开入口,不会让浏览器 JavaScript 里的密钥变得安全。

运行示例 ​

bash
pnpm tutorial:dev v2-07

打开 http://127.0.0.1:5268/,或使用 --locale zh 和 http://127.0.0.1:5268/?lang=zh。

bash
pnpm tutorial:check v2-07

检查会类型检查应用,运行确定性的记录与弹窗测试,运行部署契约测试,并生成生产构建。

常见问题 ​

只通过真实模型测试顺利路径。 模型输出会变化。先确定性测试注册表和业务路径,再单独测试模型边界。

构建成功就认为密钥安全。 成功打包的产物仍可能包含密钥。发布审查应检查源码和生成资源。

部署后不做冒烟测试。 应挂载线上页面、打开助手,并确认一个无害动作正常,再扩大能力范围。

下一步:从 Vue 2 迁移到 Vue 3。