@frontmcp/testing

中文文档
1.12.2发布于 2026/11/15Apache-2.0TypeScriptESM + CJS构建来源已验证近 30 天下载 7176

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

中文使用文档
文档目录13 节
  1. 安装
  2. 使用量
  3. 游戏预设
  4. 固定设备
  5. 匹配者
  6. 配置
  7. 通知
  8. 议定书版本
  9. 其他出口
  10. 文档
  11. 相关软件包
  12. 捐款
  13. 许可证

@ frontmcp/ 测试

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

npm License

安装

npm install -D @frontmcp/testing jest tsx

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

使用量

// 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' }] });
});
npx frontmcp test

frontmcp test (从 frontmcp CLI)运行 src/**/*.spec.ts, (中文(简体) ), __tests__/**/*.spec.ts 财务报告和审定财务报表 e2e/**/*.e2e.spec.ts 带有它生成的Jest配置. 与一个 jest.config.* 从一个开始 游戏预设。服务器从需要运行的第一个测试开始,并使用相同的测试 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 只有,所以预设仍然汇编这些软件包:

// 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 你自己来.

配置

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数字 : test,则 mcp 客户端、结果包装和运行测试
  • 固定设备: 每一个 test.use() 选项和 mcp, (中文(简体) ), server 财务报告和审定财务报表 auth 固定装置
  • 匹配者: 每个匹配者检查的内容
  • 拦截器和HTTP取笑数字 : mcp.mock, (中文(简体) ), mcp.intercept, (中文(简体) ), MockAPIServer 财务报告和审定财务报表 httpMock
  • 测试认证: 令牌、模拟 OAuth 服务器并签名
  • 测试您的服务器:引言

捐款

资料来源: libs/testing欢迎提出问题和拉动请求;见 捐款额。 。 。 .

许可证

阿帕奇2.0 (英语). 见 自由主义。 。 。 .

版本与发布记录

@frontmcp/testing 共发布 116 个版本,首次发布于 2025/12/12;过去 12 个月发布了 116 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
1.12.2latest2026/11/151 天前
1.12.12026/11/132 天前
1.12.02026/11/114 天前
1.12.0-rc.1rc2026/11/114 天前
1.11.32026/11/106 天前
1.11.22026/11/096 天前

其他发布通道:beta → 1.1.2-beta.1,rc → 1.12.0-rc.1。

关于 @frontmcp/testing 的常见问题

@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 和提交记录判断。