如何使用 Jest 进行 Snapshot 测试?

阅读时长 3 分钟读完

什么是 Jest?

Jest 是一个用于 JavaScript 编写测试的框架。它可以帮助开发者进行单元测试、集成测试和端到端测试等,并且可以轻松地与 React 应用程序集成在一起。Jest 的特殊功能之一是快照测试。

什么是快照测试?

快照测试是一种测试方法,它通过比较实际输出与先前记录的期望输出之间的差异(称为快照)来判断代码是否有误。当代码中的输出更改时,开发者可以通过更新快照来重新验证其正确性。

快照测试可以轻松验证渲染界面的 HTML 元素、应用程序状态树(如 Redux)和 React 组件的输出结果等。

如何使用 Jest 进行快照测试?

进行快照测试非常简单,您只需要在测试用例中键入以下内容即可:

此处 funcOrComponentToTest() 是要测试的函数或组件。expect(output) 断言将测试结果 output 与先前记录的快照进行比较。

在第一次运行时,Jest 将会生成一份快照并保存在 .snap 文件中。当运行测试时,Jest 会将当前生成的快照与之前的版本进行比较。如果文件没有更改,则测试将通过,否则测试将失败。

如果测试失败,您需要检查更改,看看是否直接导致的失败,或者您是否需要更新快照。

常见错误

意外更改测试结果

如果您在更新代码之后发现快照测试不再通过,那很可能是您的更改导致了输出的更改。如果您确定更改是必要的,那么您可以使用以下命令来更新快照:

快照中包含动态数据

如果您的输出结果包含了动态数据,比如当前的时间戳或者随机数,那么每次测试都会产生不同的结果,进而导致测试始终失败。这时,您可以通过手动配置快照来解决此问题。或者,您可以将动态数据移动到组件中,并在测试中设置固定的值。

新的组件输出结果无法通过测试

如果您在添加新的组件时发现测试无法通过,那么您需要更新快照。Jest 将会创建一份新的快照,并将其与之前的版本进行比较,如果两者不同,那么您需要手动确认更新是否正确才能更新快照。

结论

使用 Jest 进行快照测试可以帮助您轻松地验证代码输出结果是否正确,并防止您在修改代码时破坏之前的功能。Jest 提供了一个轻松且简单的方式来实现这一点,并且可以与 React 应用程序无缝集成。因此,在开发时,请务必记住使用 Jest 进行快照测试!

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/66f24799a44b36ee576547c6

纠错
反馈