# @chat-adapter/tests 中文文档

规范地址：https://npmcn.com/package/%40chat-adapter/tests/

版本：4\.44\.0
npm 元数据更新时间：2026-11-02T14:56:50.257Z
中文译文更新时间：2026-11-09T11:22:38.661Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40chat-adapter/tests
原文对照：https://npmcn.com/package/%40chat-adapter/tests/?lang=original
项目主页：https://chat-sdk.dev/docs/testing
源码仓库：https://github.com/vercel/chat

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

- 包体积（解压后）：43.4 kB，10 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：0 个
- peer 依赖：chat ^4\.28\.1，vitest ^5\.0\.0
- 首次发布：2026-05-18T12:55:18.144Z
- 最新版本发布：2026-11-02T14:56:49.878Z
- 近 30 天下载量：174404（2026-10-10 至 2026-11-08，npm 官方下载统计）
- 已发布版本数：19（近 12 个月 19 个）

## 中文简介

测试Chat SDK适配器和接子的工厂、配对器和设施

## 安装

```sh
npm install @chat-adapter/tests
```

也可以使用：`pnpm add @chat-adapter/tests`、`yarn add @chat-adapter/tests`、`bun add @chat-adapter/tests`

## README

# @chat-adapters/测试

> npm 软件包 : [`@chat-adapter/tests`](https://www.npmjs.com/package/@chat-adapter/tests)

[![Agent Stack](https://img.shields.io/badge/Agent%20Stack-000?style=flat-square&logo=vercel&logoColor=FFF&labelColor=000&color=000)](https://vercel.com/kb/agent-stack) [![MIT License](https://img.shields.io/badge/License-MIT-000?style=flat-square&logo=opensourceinitiative&logoColor=white&labelColor=000&color=000)](https://npmcn.com/package/LICENSE)

工厂、配对商和安装测试设施 [聊天SDK](https://chat-sdk.dev/) 适配器和锅.

## 安装

```bash
pnpm add -D @chat-adapter/tests
```

这个软件包 `chat` 财务报告和审定财务报表 `vitest` 作为同伴的依赖性——它们应该已经在你的计划中了.

## 工厂

```typescript
import {
  createMockAdapter,
  createMockChatInstance,
  createMockState,
  createTestMessage,
  mockLogger,
} from "@chat-adapter/tests";
```

### `createMockAdapter(name?, overrides?)`

返回 a `Adapter` 每种方法为: `vi.fn()` 和明智的违约。 过 `overrides` 以互换单个方法:

```typescript
const adapter = createMockAdapter("slack", {
  postMessage: vi.fn().mockResolvedValue({ id: "msg-7", raw: {} }),
});
```

### `createMockState()`

回返a `StateAdapter` 由内存支持 `Map`s——订阅,锁定,KV,列表,并排队所有工作端到端. 包括a `cache: Map<string, unknown>` 直接检查.

### `createMockChatInstance(options?)`

回返a `ChatInstance` 与每个 `process*` 处理器为 `vi.fn()`。用于适配器作者验证其适配器通过右钩发送来的事件.

```typescript
const state = createMockState();
const chat = createMockChatInstance({ state });
await myAdapter.handleWebhook(req); // your adapter under test
expect(chat.processMessage).toHaveBeenCalledOnce();
```

### `createTestMessage(id, text, overrides?)`

构建一个 `Message` aST已经装好了.

### `mockLogger` 编号 : `createMockLogger()`

`mockLogger` 是一个共享的 `Logger` 用来进行不关心隔离的测试. `createMockLogger()` 返回每个调用的新代码.

## 匹配者

Vitest自定义匹配者覆盖了最常见的Chat SDK断言.

### 通过设置文件自动注册

```typescript
// vitest.config.ts
import { defineConfig } from "vitest/config";

export default defineConfig({
  test: {
    setupFiles: ["@chat-adapter/tests/setup"],
  },
});
```

### 人工登记

```typescript
import { matchers } from "@chat-adapter/tests/matchers";
expect.extend(matchers);
```

### 可用匹配者

| 匹配者 | 辅助 |
| --- | --- |
| `expect(adapter).toHavePosted(threadId, textPattern?)` | `adapter.postMessage` 用于此线索( 和信件文本匹配) `textPattern` 如果给出) |
| `expect(adapter).toHaveEdited(threadId, messageId, textPattern?)` | `adapter.editMessage` 已调用此信件( 和文本匹配 `textPattern` 如果给出) |
| `expect(adapter).toHaveDeleted(threadId, messageId)` | `adapter.deleteMessage` 为了这个消息 |
| `expect(adapter).toHaveReactedWith(threadId, messageId, emoji)` | `adapter.addReaction` 与emoji(弦或 `EmojiValue.name`(中文(简体) ) |
| `expect(adapter).toHaveStartedTyping(threadId)` | `adapter.startTyping` 这个线程被调用 |
| `expect(adapter).toHavePostedToChannel(channelId, textPattern?)` | `adapter.postChannelMessage` 被调用到此频道 |
| `expect(chat).toHaveDispatched(handler)` | 这个名字 `process*` 模拟操作器 `ChatInstance` 被调用 |
| `expect(state).toBeSubscribedTo(threadId)` | `state.isSubscribed(threadId)` 决定: `true` (同步-需求) `await`(中文(简体) ) |

```typescript
expect(adapter).toHavePosted("slack:C1:t1", /hello/);
expect(adapter).toHaveEdited("slack:C1:t1", "msg-1", /updated/);
expect(adapter).toHaveDeleted("slack:C1:t1", "msg-1");
expect(adapter).toHaveReactedWith("slack:C1:t1", "msg-1", "thumbsup");
expect(adapter).toHaveStartedTyping("slack:C1:t1");
expect(adapter).toHavePostedToChannel("slack:C1");
expect(chat).toHaveDispatched("processMessage");
await expect(state).toBeSubscribedTo("slack:C1:t1");
```

文本版配对者(`toHavePosted`, (中文(简体) ), `toHaveEdited`, (中文(简体) ), `toHavePostedToChannel`)从 `AdapterPostableMessage` - 处理简单的弦, `PostableMarkdown.markdown`, (中文(简体) ), `PostableRaw.raw`,以及 `PostableCard.fallbackText`。 AST 形状信件(`PostableAst`和无牌 `fallbackText` 无法匹配文本 `textPattern` 检查 `mock.calls` 直接检查.

## 观众

-   **瓶装作者** - 驱动模拟事件 通过你的处理者, 坚持出门呼叫.
-   **适应作者** - 核实你 `Adapter` 执行路线webhoks通过右侧 `ChatInstance.process*` 与正确的常态有效载荷相接.

适配器专用的帮助器(例如签名的Slack webhook构建器,Teams声称的构建器)住在每个适配器的自有设备中 `/testing` 子路径,不是在这个包里.

## AI 编码代理

如果您使用OpenAI Codex, Claude Code, 或 Cursor 等AI编码代理, 在写入代码前安装 Chat SDK 技能, 使其了解 SDK API, 适配器模式, 以及项目常规 .

```bash
npx skills add vercel/chat
```

技术参考文献 `node_modules/chat/docs`,加上已发布的软件包中的适配器指南和启动模板.

您也可以安装 [Vercel 插件](https://vercel.com/docs/agent-resources/vercel-plugin) 包括Chat SDK技术与专家代理、代理斜线指令

```bash
npx plugins add vercel/vercel-plugin
```

插件是可选的;单是技能就足以用Chat SDK来构建.

关于可代理阅读的文件,见 [聊天- sdk.dev/llms.txt](https://chat-sdk.dev/llms.txt) (页数索引)或 [聊天- sdk.dev/llms- full.txt](https://chat-sdk.dev/llms-full.txt) (全文).

## 许可证

麻省理工学院

## 常见问题

### @chat-adapter/tests 是什么？

测试Chat SDK适配器和接子的工厂、配对器和设施

### 如何安装 @chat-adapter/tests？

在项目目录运行 npm install @chat-adapter/tests，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：chat（^4\.28\.1）、vitest（^5\.0\.0）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @chat-adapter/tests 支持 TypeScript 吗？

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

### @chat-adapter/tests 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @chat-adapter/tests 可以商用吗？

@chat-adapter/tests 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @chat-adapter/tests 的下载量有多少？

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

### @chat-adapter/tests 还在维护吗？

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

