---
title: 测试与贡献
description: 按变更选择实际存在的测试命令，记录结果和未覆盖范围。
lastVerified: 2026-10-23
---

# 6.13 测试与贡献

先写出变更影响的用户行为，再选择对应测试。下面的命令均从 Teloa 社区源码根目录运行；先完成[开发环境](https://docs.teloa.ai/v/0.2.8/markdown/develop/local-development.md)。

## 选择测试

| 命令 | 验证什么 |
| --- | --- |
| `pnpm test:repo` | 仓库入口、固定依赖和配置边界 |
| `pnpm test:contract` | 共享契约与解析 |
| `pnpm test:sdk` | 对外员工 SDK 合同 |
| `pnpm test:references` | 只读 MCP 协议与资料边界 |
| `pnpm test:bindings` | 客户端绑定与交互状态 |
| `pnpm test:work` | 后端业务与数据库规则 |
| `pnpm test:native` | DSH 适配与执行授权 |
| `pnpm test:extensions` | IM 与本地检索扩展 |
| `pnpm --filter @teloa/cli test` | 原生安装器与发行资源 |
| `pnpm typecheck` | 先构建，再做根类型检查 |
| `pnpm check:client` | 客户端构建边界 |

先运行受影响项，不必每次执行整张表。数据库测试需要可用的本机 Docker，部分宿主测试需要构建资源、端口或平台能力；查看测试文件的前置条件。新版本若调整脚本，以检出源码的 `package.json` 为准。

## 一个小变更怎样验证

以只读 MCP 服务为例：

```sh
pnpm test:references
```

它启动实际 stdio 服务，检查工具发现、正文读取、错误资料身份、错误版本和额外参数。服务通过后，再用[完整客户端示例](https://docs.teloa.ai/v/0.2.8/markdown/develop/mcp.md)读取一次，最后验证员工未授权拒绝、授权后可读。这样能区分协议、授权和模型三层问题。

如果只修一个测试文件覆盖的缺陷，可直接运行它，例如：

```sh
node --test packages/mcp-reference/tests/protocol.test.ts
```

## 怎样记录结果

记录源码提交、Node 与平台版本、运行命令、实际退出结果和必要回执。失败保留首次复现，修复后复跑受影响用例。跳过、缺少依赖和未测试的平台单独列出。

| 证据 | 能证明什么 |
| --- | --- |
| 格式读取器通过 | 输入满足当前格式 |
| 模拟模型或固定夹具通过 | 状态、权限与持久化链路 |
| 真实模型完成任务 | 该模型在本次输入上的实际结果 |
| 浏览器完成操作 | 该页面和状态的实际交互 |
| npm tarball 在干净环境安装 | 该平台上的发行安装路径 |

不能用其中一种代替全部其他验证。真实模型需要凭据并产生用量，应与普通单元测试分开。

## 安装器与运行环境

修改安装器时，额外验证启动、关闭终端后保活、停止、重启、端口冲突、中文与空格路径，以及备份、恢复、升级和卸载保留。npm 包应从真实 tarball 安装，发布后再从注册表核对。

日常开发使用本机宿主与 Docker 数据库；容器用于数据库和部署回归。Linux 容器通过不能代替 macOS 或 Windows 本机路径、程序和系统权限验收。

## 提交贡献

在社区仓库提交 Issue 或 PR，写清问题、触发步骤、修改后的行为、验证结果和实际限制。按仓库 `CONTRIBUTING.md` 与 `DCO.md` 添加 Signed-off-by。不要提交凭据、运行数据、私人内容或无关修改。安全问题按 `SECURITY.md` 的私密报告入口处理。
