@lynx-js/test-environment 是 Lynx Spec 的纯 JavaScript 实现,包含用于 Node.js 的 Element PAPI 和 Dual-threaded Model 实现。该项目的目标是模拟 Lynx 环境,以便用于测试。
Lynx Test Environment 中的 Element PAPI 实现基于 jsdom,例如 __CreateElement 将返回一个 LynxElement,它从 jsdom 扩展了 HTMLElement。你可以复用常用于 DOM 测试工具,例如 @testing-library/dom(页面元素的查询和事件触发)和 @testing-library/jest-dom(用于 DOM 的自定义 jest 匹配器)等。
要使用 @lynx-js/test-environment,你将主要使用其中导出的 LynxEnv 构造函数。你会得到一个 LynxEnv 实例,它具有许多有用的属性方法,特别是 switchToMainThread 和 switchToBackgroundThread,它们允许你在主线程和后台线程之间切换。
使用后台线程 API:
使用主线程 API:
请注意,你仍然可以访问其他线程的全局变量而无需切换线程:
推荐作为 Vitest 的测试环境进行配置,例如:
配置好之后,在测试中可以直接全局访问 lynxEnv 对象。
如果你想在 ReactLynx 中进行单元测试,@lynx-js/react/testing-library 中已经包含了 @lynx-js/test-environment,因此你不需要手动指定此配置。
请参考 ReactLynx Testing Library 对 @lynx-js/react/testing-library 进行配置。
详见 API 参考。