# @fieldia/testing 中文文档

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

版本：0\.36\.1
npm 元数据更新时间：2026-10-28T10:17:19.200Z
中文译文更新时间：2026-11-14T18:08:00.750Z
软件包许可：MIT

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

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

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

- 包体积（解压后）：130 kB，51 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- 运行依赖：2 个
- peer 依赖：@playwright/test ^1\.40\.0
- 首次发布：2026-10-23T01:16:24.429Z
- 最新版本发布：2026-10-28T10:17:18.672Z
- 近 30 天下载量：2363（2026-10-15 至 2026-11-13，npm 官方下载统计）
- 已发布版本数：13（近 12 个月 13 个）

## 中文简介

测试应用程序中的Fieldia表格 当人们使用这些表格时:填充,取出,检查和按下人们读取的单词,一个字段的错误和值读回——用于测试库和Playwright——和fieldia-检查,这些字段保存在CI中有效的页面.

## 安装

```sh
npm install @fieldia/testing
```

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

## README

# @ fieldia/ 测试

测试 [外地](https://fieldia.dev/) 应用程序中的窗体 **当人们使用它们时**:用其文字找到一个字段 标签,在其中键入并留下,从列表中选择,勾出一个框,用其词来按下一个按钮——然后读回一个人是什么 查看:一个字段的问题,它的警告,它的框显示什么. 同样的帮助者 **测试库** (任何DOM: jsdom或 在Jest或Vitest, 或浏览器下快乐的境界)和用于 **剧作家**还有 **`fieldia-check`**,其中一行CI 保持 您的应用程序商店在升级后有效的页面.

```sh
npm install --save-dev @fieldia/testing
```

## 与测试库( Jest, Vitest)

```ts
import { mountViewer } from '@fieldia/viewer';
import { fieldia } from '@fieldia/testing';

test('a sign-up says what is missing', async () => {
  const host = document.body.appendChild(document.createElement('div'));
  const handle = mountViewer(host, { page, dataSource });
  await handle.drawn; // the page drawn, every part it draws from in

  const form = fieldia(host);
  await form.fill('Email', 'mona@');
  expect(form.errorsOf('Email')).toEqual(['Enter an email address, like name@example.com']);
  await form.fill('Email', 'mona@example.com');
  await form.pick('Country', 'Egypt');
  await form.check('I agree to the terms');
  await form.press('Submit');
  expect(form.valueOf('Email')).toBe('mona@example.com');
});
```

每一个步骤都会传递一个人会的事件——聚焦, `beforeinput` 每个密钥( 所以一个拒绝密钥的框, 字母) 在数字中,拒绝在这里, `input`, (中文(简体) ), `change`,然后离开盒子,在那里,菲尔迪亚说一个问题——并等待一个 打开窗体的事件循环。 不依赖任何测试库 : `@testing-library/user-event`手拿起来 框改为: `await user.type(form.box('Email'), 'mona@example.com')`。在假计时器下,告诉帮助者如何 等待时间 : `fieldia(host, { settle: () => jest.advanceTimersByTimeAsync(0) })`。 。 。 .

| 帮助 | 它会做什么 |
| --- | --- |
| `field(ref)` | 字段的元素 (`.fd-field`) (中文(简体) ). 丢出, 命名显示的字段, 当没有或数个匹配时 . |
| `box(ref)` | 人输入或选择的盒子. |
| `fill(ref, text)` | 类型 `text` 代替盒子里的东西 一把钥匙 留下它. |
| `pick(ref, ...options)` | 通过他们的单词来选择:列表的选项,收音机,在几个框中精确的这些框,Fieldia自己的列表或链接记录的选项(打出后再被按下). |
| `check(ref, on = true)` | 滴答或不滴答一个"是"或"否"的盒子或开关. |
| `press(name)` | 为屏幕阅读器按下按下单词或名称的按钮(`Save`, (中文(简体) ), `Submit`, (中文(简体) ), `Add a line`) (中文(简体) ). |
| `errorsOf(ref)` 编号 : `warningsOf(ref)` | 问题/警告 球场说, 每一个字. |
| `valueOf(ref)` | 它的框显示的是什么:它的文本;一个选择的单词(`null` ;每个框的词被勾选为若干个; `true`编号 :`false` 一个盒子。 从没有存储的值——从 `handle.form.getState().values`。 。 。 . |
| `read(ref)` | 所有这一切一次: `{ label, value, errors, warnings }`。 。 。 . |
| `labels()` | 每个字段标签的字句都显示. |

一个字段被其标签的词命名为人们读取的字段——没有它所需要的标记,它的(?)或它的锁,或者,在哪里 两个字段共享标签, 按其字段: `{ field: 'email' }`。 。 。 . `fieldia(root)` 取取该取景器挂入的元素, 或对话框,或默认整个文档.

## 与剧作家

```ts
import { expect, test } from '@playwright/test';
import { fieldia } from '@fieldia/testing/playwright';

test('a refused save lands on its field', async ({ page }) => {
  await page.goto('/customers/42');
  const form = fieldia(page); // or a dialog: fieldia(page.getByRole('dialog'))
  await form.fill('Phone', '+20 2 1111 2222');
  await form.press('Save');
  await expect(await form.error('Email')).toHaveText('This email is already a customer’s');
  await expect.poll(() => form.valueOf('Phone')).toBe('+20 2 1111 2222');
});
```

同样的帮助者,每一步 Playwright 自己的(`fill`, (中文(简体) ), `selectOption`, (中文(简体) ), `check`, (中文(简体) ), `click`),所以他们作为"剧作家"等待 等待时间; `field`, (中文(简体) ), `box` 财务报告和审定财务报表 `error` 给定定位器 `expect`。读取(`errorsOf`, (中文(简体) ), `valueOf`是时刻: 把它包起来 `expect.poll`。 。 。 . `@playwright/test` 是可选的对等点:帮助者只选择其类型.

## `fieldia-check` 在 CI 语句中

```sh
npx fieldia-check pages/                       # every .json in pages/ and the folders in it
npx fieldia-check pages/ --functions vat,fx     # the names of your app's own functions its pages call
npx fieldia-check pages/ --strict               # warnings fail too
```

每页都检查,因为Fieldia读它.. `validatePage`:格式的形状,每个字段都有布局名称,每个字段 及其警告。 它为每个文件打印出一个""或"",其中包含错误,缩进, 当拒绝时, 则退出 1 。 一个更古老的Fieldia保存的一页读作Fieldia读取,所以 升级后的检查显示您的存储页面是否还在绘制 。 在代码中 : `checkPageFiles(pageFiles(['pages/']))` 从 `@fieldia/testing/pages`。 。 。 .

## 许可证

麻省理工学院

## 常见问题

### @fieldia/testing 是什么？

测试应用程序中的Fieldia表格 当人们使用这些表格时:填充,取出,检查和按下人们读取的单词,一个字段的错误和值读回——用于测试库和Playwright——和fieldia-检查,这些字段保存在CI中有效的页面\.

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

在项目目录运行 npm install @fieldia/testing，或使用 pnpm add / yarn add / bun add。它还提供命令行工具 fieldia-check，可以用 npx fieldia-check 直接运行。

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

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

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

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

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

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

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

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

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

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

