@lynx-js/testing-environment
@lynx-js/testing-environment 是 Lynx Spec 的纯 JavaScript 实现,主要覆盖 Element PAPI 和双线程模型,供 Node.js 使用。总体目标是模拟出足以用于测试的 Lynx 环境子集。
Element PAPI 的实现基于 jsdom,例如 __CreateElement 返回的 LynxElement 继承自 jsdom 的 HTMLElement。因此你可以复用常见的 DOM 测试工具,比如 @testing-library/dom(DOM 查询)和 @testing-library/jest-dom(DOM 相关的自定义 jest matcher)等。
Usage
使用 @lynx-js/testing-environment 时,主要用到包里具名导出的 LynxTestingEnv 构造函数。它返回一个 LynxTestingEnv 实例,实例上有若干有用的方法和属性,其中 switchToMainThread 和 switchToBackgroundThread 可以在主线程和后台线程之间切换。
使用后台线程 API:
使用主线程 API:
注意,不切换线程也仍然可以访问另一个线程的全局变量:
Use in Vitest
推荐把它配置为 Vitest 的测试环境,例如:
配置完成后,就可以在测试中直接通过全局变量访问 lynxTestingEnv 对象。
如果你是在 ReactLynx 中用 @lynx-js/testing-environment 做单元测试,通常不需要手动指定这项配置。
参见 ReactLynx Testing Library,从 @lynx-js/react/testing-library 继承相关配置。
Use in Rstest
如果你的测试运行器已经通过 jsdom 提供了全局 window,可以这样加载共享的 Lynx 测试环境:
Credits
鸣谢:
- jsdom,提供了纯 JavaScript 的 DOM API 实现。
Lynx 规范 的纯 JavaScript 实现,主要实现了 Element PAPI 和 双线程模型,用于在 Node.js 中使用。