@airtable/blocks-testing

中文文档
0.0.6发布于 2023/11/30UNLICENSEDTypeScriptCommonJS近 30 天下载 3万

气表块测试库

中文使用文档
文档目录4 节
  1. 执行情况
  2. 关键概念
  3. 写作测试
  4. 扩展测试 API

Airtable扩展系统自动测试的写作入门

支持自动化测试目前处于开放β状态.

执行情况

目前并非所有操作都得到支持. 在写作测试过程中,作者可能会发现: 测试中的扩展功能在被诱导进行这些操作时并不符合预期. 作者可请求 SDK 维护者提供支持,或执行所需的功能 他们的部分工作(本文件包括关于在以后的一次试验中延长API的指导意见) 页:1.

下表说明每项行动的执行情况.

操作内部支助测试 API
表格 - 创建部分 [1]
表 - 最新数据部分 [1]
表格 - 销毁: 重度 检查 标记 :
字段 - 创建部分 [1]
字段 - 更新部分 [1]
战地 - 销毁: 重度 检查 标记 :
视图 - 创建
视图 - 更新
视图 - 销毁: 重度 检查 标记 :
全球配置 - 更新: 重度 检查 标记 :无[2]
光标数据 - 更新: 重度 检查 标记 :
会话数据 - 更新
用户权限 - 更新: 重度 检查 标记 :: 重度 检查 标记 :
单击设置按钮
切换全屏幕
扩展记录: 重度 检查 标记 :
记录 - 创建部分 [3]无[2]
记录 - 更新: 重度 检查 标记 :无[2]
记录 - 销毁: 重度 检查 标记 :无[2]
  • [1] 虽然SDK的公共API支持这些操作,但其能力却受到限制. 理想的情况是,它们将得到更强大的API测试的补充.
  • [2] 这些操作可以使用SDK的公用API启动.
  • [3] 不支持的操作:为尚未装入的表格创建记录, 创建带有尚未装入字段的数据的记录, (中文(简体) ), 并在特定视图中创建记录

关键概念

测试固定数据 表示一个空军基地的状况,包括说明 表、视图、字段和记录。 由测试作者撰写,内容如下: JSON-可序列价值. 扩展测试 固定空气表扩展 允许开发者从一个正宗基础状态生成此数据. 此扩展名不是 准备好beta了.

TestDriver 是 JavaScript 用于创建和操纵模拟气表的接口 扩展环境. 它执行操作方法,而这些操作在下列情况下是不存在的: sDK号.

AirtableInterface 是介于模型和后端之间的 SDK 层. 在生产环境中,它通过一个同步消息与扩展的母程序运行 网页浏览器框架. 在测试环境中,没有传播,但 AirtableInterface 表现得好像它正在接收相关的信息,以便模拟生产行为.

变异 说明基地变化的指令。 变相穿越 AirtableInterface,它只将它们送到生产环境中的后端.

写作测试

自2021年1月起,"气表扩展"必须使用"反应框架"来写作. 这些 指令将反应的存在视为理所当然.

每个测试文件必须导入 TestDriver 通过 @airtable/blocks-testing 模块 环境被正确用于自动化.

每项试验一般进行下列步骤:

  1. 创建 TestDriver 实例, 提供有效的固定数据 :

    const testDriver = new TestDriver({
        /* fixture data here */
    });
    
  2. 以儿童身份创建扩展组件 会 议 日 程 和 议 程 TestDriver#Container 构成部分.

    render(
        <testDriver.Container>
            <MyExtension />
        </testDriver.Container>,
    );
    
  3. 为扩展提供一些投入。 这可能是模拟用户互动的形式 (例如通过) 页:1 @testing-library/user-event 图书馆(中文(简体) )

    // Simulate a user choosing the "Gruyere" option from the table labed
    // "Cheeses".
    const input = screen.getByLabelText('Cheeses');
    const option = screen.getByText('Gruyere');
    userEvent.selectOptions(input, [option]);
    

    ...或模拟后端行为(例如通过) 块 SDK 或 TestDriver (原始内容存档于2018-10-12). API.

    // Invoking `createTableAsync` in a test script simulates the condition
    // where the Airtable backend reports that a table has been created by
    // another viewer of the Base.
    await testDriver.base.createTableAsync('a new table', [
        {name: 'address', type: FieldType.EMAIL},
    ]);
    
  4. 验证扩展响应了预期输入 。 对于很多类型的互动, 扩展的响应将通过UI的某种变化来发现. 这个 @testing-library/react 图书馆 实值 一个检查用户界面状态的好选择.

    // Ensure that the UI updated to display the checkbox as "checked"
    const checkbox = screen.getByRole('checkbox');
    expect(checkbox.checked).toBe(true);
    

    ...同时 TestDriver API 可用于验证不影响扩展行为 乌伊:

    // Track every time the Extension attempts to expand a record.
    const recordIds = [];
    testDriver.watch('expandRecord', ({recordId}) => recordIds.push(recordId));
    
    // (The code necessary to simulate user inteaction elided from this example.)
    
    // Ensure that the Extension attempted to expand the Record with ID `reca`
    expect(recordIds).toEqual(['reca']);
    

待办事宜列表实例扩展的自动测试套件 显示这个模式.

扩展测试 API

为了提供可预测的行为,Airtable测试平台依赖于模拟 基地业务。 每一次模拟都需要在测试平台上提供一定的支持. 有点 模拟还需要专门的测试API.

实施内部支助 每个 基础操作需要一定的模拟代码 在测试环境中支持脚本.

对于一些操作来说,这种模拟可能与内部的“不操作”执行一样有限 方法。 这些操作包括SDK乐观应用的突变和没有 直接影响扩展.

其他行动需要更先进的模拟逻辑。 此类业务一般依赖 在后端的反应 来确定它们对基地的影响。 模拟行为应该是 可预见,模仿生产中的预期反应.

实施专门的API 任何操作不需要专门的测试 API 可以通过SDK的公用API来表达(例如"创建许多记录"或"删除一个表格"). 当测试作者希望脚本这样的操作时,他们应该直接使用SDK. 这是 无效,因为扩展无法区分后端启动的操作和 由使用 SDK 的测试脚本启动的操作.

许多其他操作不能通过SDK的公开API表达. 这个 TestDriver API 必须 以允许测试作者模拟这些操作.

由于截至2021年1月,SDK是 不完整,正在积极发展之中。 这包括删除字段的 API 。 其他限制 对扩展平台的设计至关重要。 例如SDK故意省略 用于修改当前用户权限的扩展方法。 这种区分可能有利于 * 决定采用检测API,因为这样做将增加维护责任 也可以通过未来扩展SDK的公开API来避免.

版本与发布记录

@airtable/blocks-testing 共发布 7 个版本,首次发布于 2021/03/02;过去 12 个月发布了 0 个版本。

版本发布日期距今
0.0.6latest2023/11/302 年前
0.0.52022/09/244 年前
0.0.4-experimental-68738f2-20220526experimental2022/05/274 年前
0.0.42021/04/245 年前
0.0.32021/03/065 年前
0.0.22021/03/055 年前

关于 @airtable/blocks-testing 的常见问题

@airtable/blocks-testing 是什么?

气表块测试库

如何安装 @airtable/blocks-testing?

在项目目录运行 npm install @airtable/blocks-testing,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:react(^16.8.0 || ^17.0.0)、react-dom(^16.8.0 || ^17.0.0)、@airtable/blocks(^1.5.1)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@airtable/blocks-testing 支持 TypeScript 吗?

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

@airtable/blocks-testing 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@airtable/blocks-testing 可以商用吗?

@airtable/blocks-testing 使用 UNLICENSED 许可。作者声明为 UNLICENSED,即不授予公开使用许可(与公共领域的 Unlicense 不同)。使用前需获得作者授权。以上为概括,不构成法律意见,请以许可原文为准。

@airtable/blocks-testing 的下载量有多少?

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

@airtable/blocks-testing 还在维护吗?

最新版本 0.0.6 发布于 2023/11/30(2 年前);至今共发布 7 个版本,其中过去 12 个月发布了 0 个;首次发布于 2021/03/02。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。