框架适配器是专门的包,通过在 Cypress 的测试基础架构和使用 React、Vue、Angular 和 Svelte 等特定前端框架构建的组件之间提供桥梁,从而支持组件测试。它们规范了在不同框架中挂载、测试和卸载组件的方式。
有关与框架适配器配合使用的开发服务器的信息,请参阅 开发服务器。
框架适配器是 Cypress 组件测试基础设施中的关键子系统。它们与开发服务器协同工作,将组件编译并在隔离环境中进行渲染以进行测试。
来源
Cypress 正式支持以下框架适配器
| 框架 | 包 | 最新版本 | 支持的框架版本 |
|---|---|---|---|
| React | @cypress/react | v9.0.0+ | React 18+ |
| Vue | @cypress/vue | v6.0.0+ | Vue 3+ |
| Angular | @cypress/angular | v3.0.0+ | Angular 17.2+ |
| Svelte | @cypress/svelte | - | Svelte 3+ |
来源
所有框架适配器都提供了一个 mount 命令,该命令是组件测试的主要 API。此命令
来源
@cypress/mount-utils 包提供了所有框架适配器使用的共享实用程序,包括
getContainerEl():检索指定的 DOM 容器元素ROOT_SELECTOR:组件挂载点的选择器(现在是 [data-cy-root])setupHooks():配置生命周期钩子,以便在测试之间进行正确的清理这些实用程序确保了所有框架适配器之间的一致行为,同时允许进行特定于框架的实现。
来源
每个框架适配器都实现了其目标框架特有的挂载逻辑
React 适配器使用 ReactDOM(适用于 React 18+)来挂载组件,处理
Vue 适配器支持 Vue 3 的 Composition API 并处理
Angular 适配器由于 Angular 的架构最为复杂
Svelte 适配器支持 Svelte 的编译时方法
来源
框架适配器与由打包器驱动的开发服务器协同工作,以编译和提供组件进行测试。支持的主要打包器是
Webpack:通过 @cypress/webpack-dev-server 包
Vite:通过 @cypress/vite-dev-server 包
打包器的选择在组件测试设置过程中指定,并由框架适配器管理。
来源
当组件被挂载时,会发生以下过程
主要实现细节
#__cy_root 更改为使用属性 [data-cy-root]来源
框架适配器的架构允许创建其他框架的自定义适配器。自定义适配器必须
@cypress/mount-utils 导入实用程序setupHooks() 注册生命周期钩子自定义适配器实现模式示例
来源
框架适配器的组件测试是通过 Cypress 的组件测试向导配置的,该向导有助于设置
WizardDataSource 根据选择的框架和打包器管理必需依赖的检测和安装。
来源
框架适配器已发生重大演变
@cypress/mount-utils 标准化了核心功能最近的显著更改包括
来源
在使用框架适配器时
框架适配器的设计旨在让组件测试在每个框架生态系统中感觉自然,同时提供 Cypress 测试功能的力量。