# @frontmcp/testing 中文文档

规范地址：https://npmcn.com/package/%40frontmcp/testing/

版本：1\.12\.2
npm 元数据更新时间：2026-11-14T21:10:02.211Z
中文译文更新时间：2026-11-15T15:16:34.783Z
软件包许可：Apache-2\.0

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40frontmcp/testing
原文对照：https://npmcn.com/package/%40frontmcp/testing/?lang=original
项目主页：https://frontmcp.dev/reference/testing
源码仓库：https://github.com/agentfront/frontmcp

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：1.3 MB，157 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- Node.js 要求：\>=24\.0\.0
- 运行依赖：6 个
- peer 依赖：jest ^29\.0\.0 \|\| ^30\.0\.0，@frontmcp/ui 1\.12\.2，@frontmcp/sdk 1\.12\.2，@jest/globals ^29\.0\.0 \|\| ^30\.0\.0，@playwright/test ^1\.40\.0，@frontmcp/lazy-zod 1\.12\.2
- 首次发布：2025-12-11T16:58:10.211Z
- 最新版本发布：2026-11-14T21:10:01.907Z
- 近 30 天下载量：7176（2026-10-16 至 2026-11-14，npm 官方下载统计）
- 已发布版本数：116（近 12 个月 116 个）

## 中文简介

FrontMCP服务器的端到端测试:带有连接的MCP客户端的Jest固定装置,MCP匹配器,JWT和OAuth模拟,和HTTP模拟

## 安装

```sh
npm install @frontmcp/testing
```

也可以使用：`pnpm add @frontmcp/testing`、`yarn add @frontmcp/testing`、`bun add @frontmcp/testing`

## README

# @ frontmcp/ 测试

FrontMCP服务器的端到端测试. 它启动您的服务器, 每个测试 `mcp`,一个连接到它的 MCP 客户端,并添加匹配者喜欢 `toBeSuccessful()` 财务报告和审定财务报表 `toContainTool()` 改为 `expect`. 在 Jest 下进行的测试 `frontmcp test` 或你自己的杰斯特配置。 它还有制作自己测试的部件:JSON Web Token(JWT)工厂,模拟OAuth和API服务器,HTTP模拟和请求截取器.

[![npm](https://img.shields.io/npm/v/@frontmcp/testing.svg)](https://www.npmjs.com/package/@frontmcp/testing) [![License](https://img.shields.io/npm/l/@frontmcp/testing.svg)](https://github.com/agentfront/frontmcp/blob/main/LICENSE)

## 安装

```bash
npm install -D @frontmcp/testing jest tsx
```

要求节点js 24或以后,以及 `@frontmcp/sdk` 在项目中(对等依赖,如: `@frontmcp/lazy-zod`和SDK一起来的. `jest` (29或30)进行测试 `@jest/globals`随它而来,提供 `expect`;两者都是可选的同龄人,这样使活物厂和模拟服务器在杰斯特之外工作. 库启动您的服务器 `tsx`。 。 。 . `@swc/jest`,它汇编测试结果,与软件包一起安装.

## 使用量

```ts
// e2e/tickets.e2e.spec.ts
import { expect, test } from '@frontmcp/testing';

test.use({ server: './src/main.ts' });

test('server exposes tools', async ({ mcp }) => {
  const tools = await mcp.tools.list();
  expect(tools).toContainTool('search_tickets');
});

test('tool execution works', async ({ mcp }) => {
  const result = await mcp.tools.call('search_tickets', { query: 'log' });
  expect(result).toBeSuccessful();
  expect(result.json()).toEqual({ tickets: [{ id: 'T-1', title: 'Cannot log in' }] });
});
```

```bash
npx frontmcp test
```

`frontmcp test` (从 [`frontmcp`](https://www.npmjs.com/package/frontmcp) CLI)运行 `src/**/*.spec.ts`, (中文(简体) ), `__tests__/**/*.spec.ts` 财务报告和审定财务报表 `e2e/**/*.e2e.spec.ts` 带有它生成的Jest配置. 与一个 `jest.config.*` 从一个开始 [游戏预设](https://npmcn.com/package/%40frontmcp/testing/#readme-jest-presets)。服务器从需要运行的第一个测试开始,并使用相同的测试 `test.use()` 选项共享.

## 游戏预设

| 预设 | 用它来 |
| --- | --- |
| `preset: '@frontmcp/testing'` | 配置 `frontmcp test` 生成: 单位和 e2e 规格, 60秒超时, 和通过 `@frontmcp/testing/setup` |
| `preset: '@frontmcp/testing/jest-preset-unit'` | 单位测试, 在 CommonJS 项目中: Jest 默认的5秒超时, 没有设置文件, 以及每个 `*.spec.ts(x)` 除外 `*.e2e.spec`, (中文(简体) ), `*.perf.spec` 财务报告和审定财务报表 `*.pw.spec` 文档。 添加 `@frontmcp/testing/setup` 改为 `setupFilesAfterEnv` 要使用匹配器 |

将 TypeScript 和 TSX 编译为 `@swc/jest`,同时编译 `jose`, (中文(简体) ), `@noble/hashes` 财务报告和审定财务报表 `@noble/ciphers`,只使用无害环境管理的软件包 SDK 负载, Jest 的 CommunityJS 运行时间 否则失败 `SyntaxError: Unexpected token 'export'`。要编译您的脚本 `ts-jest`,设置变换 `.ts` 只有,所以预设仍然汇编这些软件包:

```js
// jest.config.js
module.exports = {
  preset: '@frontmcp/testing/jest-preset-unit',
  transform: { '^.+\\.tsx?$': 'ts-jest' },
};
```

`testMatch` 财务报告和审定财务报表 `transformIgnorePatterns` 将预设的列表复制到您的条目中.

## 固定设备

| 固定线 | 说明 |
| --- | --- |
| `mcp` | 连接到服务器的客户端, 每次测试都要新 : `tools`, (中文(简体) ), `resources`, (中文(简体) ), `prompts`、原始请求、通知和日志 |
| `server` | 运行中的服务器 : `info` (单位:千美元)`baseUrl`, (中文(简体) ), `port`, (中文(简体) ), `pid`, (中文(简体) ), `createClient()`, (中文(简体) ), `createClientBuilder()`, (中文(简体) ), `restart()`, (中文(简体) ), `getLogs()`, (中文(简体) ), `clearLogs()` |
| `auth` | 让JWTs: `createToken()`, (中文(简体) ), `createExpiredToken()`, (中文(简体) ), `createInvalidToken()`, (中文(简体) ), `users` (单位:千美元)`admin`, (中文(简体) ), `user`, (中文(简体) ), `readOnly`, (中文(简体) ), `getJwks()`, (中文(简体) ), `getIssuer()`, (中文(简体) ), `getAudience()` |

`test.beforeEach()` 财务报告和审定财务报表 `test.afterEach()` 当他们的召回使用一个参数时,得到相同的固定装置.

## 匹配者

**工具**数字 : `toContainTool`, (中文(简体) ), `toBeSuccessful`, (中文(简体) ), `toBeError`, (中文(简体) ), `toHaveTextContent`, (中文(简体) ), `toHaveImageContent`, (中文(简体) ), `toHaveResourceContent`, (中文(简体) ), `toPassOutputSchemaWhole`

**资源**数字 : `toContainResource`, (中文(简体) ), `toContainResourceTemplate`, (中文(简体) ), `toHaveMimeType`

**提示**数字 : `toContainPrompt`, (中文(简体) ), `toHaveMessages`

**议定书**数字 : `toBeValidJsonRpc`, (中文(简体) ), `toHaveResult`, (中文(简体) ), `toHaveError`, (中文(简体) ), `toHaveErrorCode`

**工具用户界面**数字 : `toHaveRenderedHtml`, (中文(简体) ), `toContainHtmlElement`, (中文(简体) ), `toContainBoundValue`, (中文(简体) ), `toBeXssSafe`, (中文(简体) ), `toHaveWidgetMetadata`, (中文(简体) ), `toHaveCssClass`, (中文(简体) ), `toNotContainRawContent`, (中文(简体) ), `toHaveProperHtmlStructure`

使用他们通过 `expect` 此套件导出, 这是 Jest 的 `expect` 与这些匹配者键入. `frontmcp test` 编辑 `@frontmcp/testing` 预设注册,通过 `@frontmcp/testing/setup`,您可以添加到 `setupFilesAfterEnv` 你自己来.

## 配置

```ts
import { test } from '@frontmcp/testing';

test.use({
  server: './src/main.ts', // the entry file, run with tsx
  port: 3003, // default: a free port
  transport: 'streamable-http', // or 'sse'
  entryPath: '/mcp', // if the server sets http.entryPath
  publicMode: true, // send no Authorization header, for auth: { mode: 'public' }
  logLevel: 'debug', // the server's own log level
  protocolVersion: '2026-07-28', // default: '2025-06-18'
  mcpLogLevel: 'info', // the log messages the clients ask for; default: 'debug', false for none
  env: { API_KEY: 'test' },
  startupTimeout: 30_000,
});
```

打电话 `test.use()` 在文件的顶端配置其中或其中的每个测试 `test.describe()` 以配置该块,然后获得自己的服务器. `baseUrl` 测试一个已经运行的服务器而不是启动一个 .

## 通知

一个工具的进步和日志消息到达 `mcp.notifications` 时间 `mcp.tools.call()` 返回,来自FrontMCP服务器,在调用时发送它们(1.11.3和以后)。 除非 `mcpLogLevel` 说不说,每个进度更新都保持其 `message`。 。 。 .

## 议定书版本

客户会说MCP `2025-06-18` 和任何修改,直到 `2025-11-25` 打开会话 `initialize`与 `protocolVersion: '2026-07-28'` 这是无国籍的:它与 `server/discover`,并随其 `_meta` 和镜像页眉`MCP-Protocol-Version`, (中文(简体) ), `Mcp-Method`, (中文(简体) ), `Mcp-Name`, (中文(简体) ), `Mcp-Param-*`),回答一个工具的 `this.elicit()` 结束 `input_required` 还有你的 `mcp.onElicitation()` 处理器,并按 `subscriptions/listen`。 。 。 . `mcp.discover()` 发送 `server/discover` 任何版本的客户端.

## 其他出口

| 导出 | 用它来 |
| --- | --- |
| `McpTestClient`, (中文(简体) ), `TestServer` | 启动服务器并连接客户端, 无需固定 |
| `TestTokenFactory`, (中文(简体) ), `MockOAuthServer`, (中文(简体) ), `MockCimdServer` | 签名令牌, 代理 OAuth 提供者, 并服务客户端 ID 元数据文件 |
| `MockAPIServer`, (中文(简体) ), `httpMock`, (中文(简体) ), `httpResponse` | 回答 HTTP 调用您的工具制作 |
| `mockResponse`, (中文(简体) ), `interceptors` | 隐藏或更改 MCP 请求 `mcp` 客户端 |
| `perfTest`, (中文(简体) ), `LeakDetector`, (中文(简体) ), `MetricsCollector` | 测量内存和时间,并发现漏洞 |

## 文档

-   [`@frontmcp/testing`](https://frontmcp.dev/reference/testing)数字 : `test`,则 `mcp` 客户端、结果包装和运行测试
-   [固定设备](https://frontmcp.dev/reference/testing/fixtures): 每一个 `test.use()` 选项和 `mcp`, (中文(简体) ), `server` 财务报告和审定财务报表 `auth` 固定装置
-   [匹配者](https://frontmcp.dev/reference/testing/matchers): 每个匹配者检查的内容
-   [拦截器和HTTP取笑](https://frontmcp.dev/reference/testing/interceptors)数字 : `mcp.mock`, (中文(简体) ), `mcp.intercept`, (中文(简体) ), `MockAPIServer` 财务报告和审定财务报表 `httpMock`
-   [测试认证](https://frontmcp.dev/reference/testing/auth): 令牌、模拟 OAuth 服务器并签名
-   [测试您的服务器](https://frontmcp.dev/learn/testing-your-server):引言

## 相关软件包

-   [`@frontmcp/sdk`](https://www.npmjs.com/package/@frontmcp/sdk): 正在测试的服务器的构建框架
-   [`frontmcp`](https://www.npmjs.com/package/frontmcp): 国家综合倡议,其 `frontmcp test` 运行您的测试
-   [`@frontmcp/observability`](https://www.npmjs.com/package/@frontmcp/observability): 有过 `createTestTracer()` 检查测试记录的跨度

## 捐款

资料来源: [`libs/testing`](https://github.com/agentfront/frontmcp/tree/main/libs/testing)欢迎提出问题和拉动请求;见 [捐款额](https://github.com/agentfront/frontmcp/blob/main/CONTRIBUTING.md)。 。 。 .

## 许可证

阿帕奇2.0 (英语). 见 [自由主义](https://github.com/agentfront/frontmcp/blob/main/LICENSE)。 。 。 .

## 常见问题

### @frontmcp/testing 是什么？

FrontMCP服务器的端到端测试:带有连接的MCP客户端的Jest固定装置,MCP匹配器,JWT和OAuth模拟,和HTTP模拟

### 如何安装 @frontmcp/testing？

在项目目录运行 npm install @frontmcp/testing，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：@frontmcp/sdk（1\.12\.2）、@frontmcp/lazy-zod（1\.12\.2）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @frontmcp/testing 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @frontmcp/testing 支持 ESM 还是 CommonJS？

同时提供 ES Module 与 CommonJS 入口，import 和 require\(\) 都可以使用，打包工具会自动选择合适的版本。

### @frontmcp/testing 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=24\.0\.0。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @frontmcp/testing 可以商用吗？

@frontmcp/testing 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @frontmcp/testing 的下载量有多少？

根据 npm 官方下载统计，@frontmcp/testing 在 2026/10/16 – 2026/11/14 这 30 天内被下载 7,176 次，日均约 239 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @frontmcp/testing 还在维护吗？

最新版本 1\.12\.2 发布于 2026/11/15（1 天前）；至今共发布 116 个版本，其中过去 12 个月发布了 116 个；首次发布于 2025/12/12。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

