维特插头
自定义匹配器和快照序列器可以增强活性测试.
安装
npm install -D @altano/vitest-plugins
安装自定义匹配器
修改 vite.config.ts / vitest.config.ts :
export default defineConfig({
test: {
setupFiles: [
"@altano/vitest-plugins/matchers",
// ...
],
// ...
},
});
在您的 tsconfig.json (如果使用 TypeScript) 中添加匹配器类型 :
{
"compilerOptions": {
"types": ["@altano/vitest-plugins/matchers"]
}
}
安装快照序列器
修改 vite.config.ts / vitest.config.ts :
export default defineConfig({
test: {
setupFiles: [
"@altano/vitest-plugins/serializers",
// ...
],
// ...
},
});
注:您可以选择安装什么:匹配器和序列器不依赖对方.
细节
快照序列器
V 文件
将格式化 a vfile 文档 使用 Prettier(自动从 vfile 文件名中检测类型),例如.
FormattedVFile {
"cwd": "<cwd>",
"data": {},
"history": [
"tests/unit/__fixtures__/basic/input.js",
],
"map": undefined,
"messages": [],
"value": "function face() { }"
}
绝对路径
将替换任何 process.cwd() 与 <cwd> 在快照中。 当序列化包含绝对路径的字符串时有用,因为这些在运行测试的其他机器上会有所不同.
URL( URL)
将替换任何 http://localhost:1234 与 http://localhost 在快照中。 处理使用随机端口的测试服务器时有用 .
HTML 语言
HTML 格式化了 。 只工作于 HTML 的外观良好, 首先是 <html 或者说 <!doctype。为了避免无限重写 HTML 格式,它准备使用 <!-- Formatted HTML -->。 。 。 .
匹配者
Vitest 的错误匹配器允许您与错误消息匹配, 但不包括其他错误对象 :
toThrow(error?)- 抛出错误(文档(中文(简体) )toThrowErrorMatching[Inline]Snapshot- 一个错误 没错 匹配一个快照( e)文档(中文(简体) )
如果您想要断言任何更复杂的事情( 例如一个错误在堆栈中包含一些子字符串), 您就需要这些自定义匹配符 :
切换错误
校验出错对象的任何部分( 如堆栈) :
expect(new Error("face")).toMatchError(
expect.objectContaining({
stack: expect.stringContaining("readme.spec.ts"),
}),
);
丢弃错误
校验 a 的任何部分 抛出 错误对象( 如堆栈) :
expect(() => {
throw new Error("face");
}).toThrowErrorMatching(
expect.objectContaining({
stack: expect.stringContaining("readme.spec.ts"),
}),
);
选择
校验预期的真实路径( 奇异路径) 。 处理逻辑路径,同义链接等时,比字符串检查更宽大.
expect("/private/some/path").toBePath("/some/path");
备忘
校验文件存在( 在文件系统中)
expect(import.meta.filename).toBeFile();
要成为目录
验证目录存在( 在文件系统中)
expect("/").toBeDirectory();
至等号
验证某一路径的文件内容是否与另一路径的文件内容相匹配
expect("/some/file.txt").toEqualFile("/other/file.txt");
拥有自由财产
类似于 toHaveProperty 匹配器,但检查给定缓冲器上的exif属性(或可用 exifr 图书馆).
ưμ㼯A
验证响应是否具有预期标题和可选值
(关于反应对象)
验证回复是否有预期状态代码