@zerolith /测试
零位应用程序的测试助手,独立于测试运行器。
import { afterEach, expect, it } from "vitest";
import { accessibilityIssues, cleanup, hydrationMismatches, mount, settle } from "@zerolith/test";
afterEach(cleanup);
it("renders and hydrates", async () =>
{
const { container } = mount(Counter());
container.querySelector("button")?.click();
await settle();
expect(container.textContent).toContain("1");
expect(hydrationMismatches(() => Counter())).toEqual([]);
expect(accessibilityIssues(container)).toEqual([]);
});
mount将视图呈现到附加到文档的容器中并记住它;给定一个函数,比如mount(() => Dashboard()),它在它自己的所有者内部调用它,所以一个组件注册了清理onDispose就像现在一样。cleanup以相反的顺序处理所有已安装的东西。settle等待测试启动时的承诺,比如资源和惰性路由;效果本身同步运行。hydrationMismatches使用服务器渲染器渲染视图,在该标记上渲染相同的视图,并返回每个不一致,因此不能渲染的组件将无法通过测试。accessibilityIssues在没有浏览器引擎的可访问性树的情况下,找到测试可以捕获的缺陷:没有可选文本的图像,没有标签的控件,没有名称的按钮和链接,没有标题的框架。
在Vitest(它读取组件本身)下,添加插件from @zerolith/vite 作为 zerolith({ hot: false }) 因此测试将读取JSX和样式表 ?scoped 正如应用程序所做的那样;一个来自 zerolith new 有吗? vitest.config.ts.指南在 文档网站.
状态:α。安装与 npm install --save-dev @zerolith/test@alpha; API可能会在1.0之前更改。
文档
许可证
apache - 2.0。看到 LICENSE.