在前端开发中,我们经常使用 Jest 来进行单元测试和快照测试。而 jest-specific-snapshot 是一个非常有用的 npm 包,它可以让我们更加精细地控制 Jest 的快照测试。
安装
首先,在项目根目录下运行以下命令来安装 jest-specific-snapshot:
npm install jest-specific-snapshot --save-dev
用法
在你的测试文件中引入包并使用它提供的 matcher:
const { toMatchSpecificSnapshot } = require('jest-specific-snapshot'); expect.extend({ toMatchSpecificSnapshot });
现在你就可以使用 toMatchSpecificSnapshot
这个 matcher 了。
这个 matcher 接受两个参数:第一个是被测试的结果,第二个是该快照的名称。例如:
test('should match specific snapshot', () => { const result = someFunction(); expect(result).toMatchSpecificSnapshot('some-function-test'); });
当你第一次运行这个测试时,它会创建一个名为 __snapshots__/your-test.spec.js.snap
的文件,并将该文件保存在你的项目中。这个文件就是你的快照。
接下来,每次运行测试时,Jest 会将当前执行结果与这个快照进行比较。如果它们不同,测试就会失败。
但是,如果你试图手动更改快照文件,或者修改了实际的执行结果,测试也会失败。这是因为 Jest 会将每个快照都与代码库中的 git 提交关联起来,从而确保你的快照与你的代码一致。
指导意义
使用 jest-specific-snapshot 可以帮助我们更好地控制 Jest 的快照测试,并使其更加精细。但是请注意,快照测试并不是适合所有情况的解决方案。在某些情况下,手动编写断言可能是更好的选择。
最后,附上一个完整的示例代码:
-- -------------------- ---- ------- ----- - ----------------------- - - ---------------------------------- --------------- ----------------------- --- ------------------------ -- -- - ------------ ----- -------- ---------- -- -- - ----- ------ - --------------- ------------------------------------------------------------- --- ---
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/54928