@fluidframework/test-runtime-utils (英语)
流体框架运行时间测试工具。 包括模拟实施各种运行时界面,以及 用于验证特定日志序列的模拟日志.
使用 Fluid 框架库
对于依赖流体框架库的公共API,我们建议 ^ (caret)版本范围.
例如,使用 ^1.3.4。 。 。 .
依赖不稳定的API,例如: beta API,我们推荐一个更具限制性的版本范围.
例如,使用一个 ~ 版本范围.
安装
运行此命令以安装软件包 :
npm i @fluidframework/test-runtime-utils
从此软件包导入
此软件包使用 packet.json 导出 通过支持级别将API分离. 有关支助保障的信息改为: API 支持级别。 。 。 .
导入 public API 从 @fluidframework/test-runtime-utils。 。 。 .
导入 legacy API 从 @fluidframework/test-runtime-utils/legacy。 。 。 .
API 文档
读取 @fluidframework/test-runtime-utils (英语) API 文档 https://fluidframework.com/docs/apis/test-runtime-utils (中文(简体) )。 。 。 .
DDS 写入单元测试
发展服务单元测试分为三大类。 以下各节解释如何使用本包中的模型为这些类别写出单位测试.
当地单位测试
这些测试不需要远程DDS,因此不需要DDS连接. 例如,测试DDS API工作正确,局部事件正确发射,摘要生成并正确加载等. 为了对这些情况进行单位测试,遵循这些步骤:
- 创建一个
MockFluidDataStoreRuntime。MockFluidDataStoreRuntime并没有真正做任何事情,只是用来创建DDS. - 设定
MockFluidDataStoreRuntime是因为local属性改为true。这将确保DDS产生的操作不被发送. - 使用
MockFluidDataStoreRuntime创建 DDS.
实例 地图, (中文(简体) ), 目录, (中文(简体) ), 矩阵。 。 。 .
远程单元测试
这些测试需要远程DDS,需要DDS连接. 例如,测试操作正确应用在远程客户端上,本地操作正确ock'd,远程事件正确发射等. 为了对这些情况进行单位测试,遵循这些步骤:
- 创建一个
MockFluidDataStoreRuntime。 。 。 . - 使用
MockFluidDataStoreRuntime创建 DDS. - 我们需要能够处理来自多个DDS/客户端的信息. 创建一个
MockContainerRuntimeFactory用于存储来自多个客户端的信息,并在需要时对其进行处理. - 创建一个
MockContainerRuntime拨打createContainerRuntime编辑MockContainerRuntimeFactory。 。 。 .MockContainerRuntime跟踪信件和本地的OpMetadata,直到它失效. - 我们需要连接并附加到一个IDelta连接上,以便它可以提交和处理消息. 创建一个
MockDeltaConnection拨打createDeltaConnection编辑MockContainerRuntime。 。 。 . - 使用
MockDeltaConnection连接 DDS.
实例 顺序汉德勒, (中文(简体) ), 快取图像。 。 。 .
重新连接单元测试
这些是远程单元测试,此外它们还需要断开和重新连接客户的能力. 例如,在重新连接时测试 - DDSs 重新发送操作正确,远程客户端接收操作正确,本地客户端锁定操作正确等. 为了对这些情况进行单位测试,遵循这些步骤:
- 按照上述设想2的所有步骤进行这些修改:
- 创建
MockContainerRuntimeFactoryForReconnection改为MockContainerRuntimeFactory。 。 。 . - 创建
MockContainerRuntimeForReconnection改为MockContainerRuntime。 。 。 .
- 创建
- 要断开客户端, 设置
connected = false编辑MockContainerRuntimeForReconnection。这将触发删除此客户端在MockContainerRuntimeFactoryForReconnection。 。 。 . - 要重新连接客户端, 设置
connection = true编辑MockContainerRuntimeForReconnection这将触发reSubmit调用 DDS 重新发送未装入/ 未发送操作 .
实例 共享结构, (中文(简体) ), 协商一致命令, (中文(简体) ), 协商一致登记。 。 。 .
不安全的托肯保护者
这个 InsecureTokenProvider 为本地生成的 JWT 令牌提供类,使用租户密钥签名,可以发送到流体服务. 这些令牌将用来认证和识别哪个用户正在从客户端发送操作.
它需要两个参数:
tenantKey- 用来签名 与符号使用tenantId我们试图连接到服务user- 用来在目前编辑容器的观众中充斥当前用户的细节
这个 AzureClient从 @fluidframework/azure-client 软件包,以 tokenProvider 参数作为其构建器的一部分。 此参数可通过使用 InsecureTokenProvider 此处导出。 然而,建议它只用于开发或测试目的,因为它有可能暴露您的Azure Fluid Relay服务租户在客户端代码上的密钥.
利用当地微小实例促进发展
使用时 AzureClient,您可以配置它来对抗本地的微小实例。 请看客户的 关于地方发展的文件 关于如何这样做的更多信息。 在这种情况下 InsecureTokenProvider 将取任何值 tenantKey 参数,因为我们正在工作 一个本地的微小实例 不需要任何认证。 因此,我们可以创建这样的例子:
const tokenProvider = new InsecureTokenProvider("fooBar", { id: "123", name: "Test User" });
使用Azure Fluid中继服务促进发展
这个 AzureClient 也可以配置到所部署的 Azure Fluid 中继服务实例,如描述 这里。现在,配置正在使用真实的 tenantId 编辑 InsecureTokenProvider 需要匹配 tenantKey 服务期间提供的服务.
const tokenProvider = new InsecureTokenProvider("YOUR-TENANT-KEY-HERE", {
id: "123",
name: "Test User",
});
同样,这只应用于本地开发,因为客户端代码中包含租户密钥有可能导致恶意用户从客户端的捆绑中嗅出. 请考虑使用 AzureFunction Token 创建器 或实现 ITokenProvider 接口作为生产情景的替代品.
客户最低要求
Fluid框架客户端库支持此文档中的平台. 这些要求有意具有限制性. 在一个主要的版本系列中,我们可以放松这些要求,但我们不能使其更严格. 对于长期支持(LTS)版本,我们可能需要支持这些平台几年.
其他配置可以奏效,但Fluid框架不支持. 如果一个不支持的配置停止工作, 我们不会将此归类为错误 . 要请求支持未列出的配置, 请存档 . 产品组会评估你的要求. 在此问题上,请具体说明配置的现状:
- 配置有效但需要官方支持.
- 配置不起作用,需要更改.
支持的运行时间
- Fluid框架支持节点.js版本22和24同时收到 上游支助。 。 。 .
- 流体框架将停止支持第22版 当上游支持于2027-04-30结束时。 。 。 .
- 流体框架不支持节点.js与
--no-experimental-fetch旗帜.
- Fluid框架支持支持ES2022标准库的现代浏览器.
支持的工具
- 类型脚本 6.0数字 :
- 流体框架支持全部
strict选项. - 设定建设目标(
lib, (中文(简体) ),target改为:ES2022或后会. - 启用
strictNullChecks。 。 。 . - 流体框架不支持 在 TypeScript 6.0 中贬值的配置选项。 。 。 .
- 流体框架不完全支持
exactOptionalPropertyTypes。 。 。 . 如果您启用此选项, 请不要使用in, (中文(简体) ),Reflect.has, (中文(简体) ),Object.hasOwn,或Object.prototype.hasOwnProperty改为Fluid框架类型的窄成员. 这些方法可以错误地排除undefined从可能的值.
- 流体框架支持全部
- 网络软件包 页:1
- 我们不需要一个特定的捆绑者. 其他处理ES模块的捆绑机可以工作,但我们只积极测试网页包.
模块分辨率
在类型脚本中 compilerOptions,使用时 Node16, (中文(简体) ), Node20, (中文(简体) ), NodeNext,或 Bundler 模块分辨率.
这些设置遵循 节点.js v12+无害环境管理 分辨率和加载算法。 。 。 .
不使用 Node10 模块分辨率.
模块格式
- ES模块: 使用ES模块来消耗Fluid框架客户端软件包,包括在Node.js中.
- 常见JS : Fluid Framework在3.0版本或后期不正式支持CommonJS.
贡献准则
你们可以 贡献 通过这些方式实现流体框架:
详细指示改为: repo 文档。 。 。 .
本项目遵循 Microsoft 开源行为守则。 。 。 . 更多信息,改为: 《行为守则》经常被问到的问题。 。 。 . 问题或评论,联系 打开码@ microsoft.com。 。 。 .
这个项目可能包含微软项目的商标或标志,产品,或服务. 这些商标或标志的使用必须遵循微软 商标和品牌准则。 。 。 . 在这个项目的修改后版本中使用微软商标或标志不得造成混淆或暗示微软赞助.
帮助
读取 流体框架文件 用于了解流体框架概念和API.
要求提供文件未载列的资料, 创建问题。 。 。 .
商标
这个项目可能包含微软项目的商标或标志,产品,或服务.
这些商标或标志的使用必须遵循微软的 商标和品牌准则。 。 。 .
在这个项目的修改后版本中使用微软商标或标志不得造成混淆或暗示微软赞助.