什么是 Jest?
Jest 是一个用于 JavaScript 编写测试的框架。它可以帮助开发者进行单元测试、集成测试和端到端测试等,并且可以轻松地与 React 应用程序集成在一起。Jest 的特殊功能之一是快照测试。
什么是快照测试?
快照测试是一种测试方法,它通过比较实际输出与先前记录的期望输出之间的差异(称为快照)来判断代码是否有误。当代码中的输出更改时,开发者可以通过更新快照来重新验证其正确性。
快照测试可以轻松验证渲染界面的 HTML 元素、应用程序状态树(如 Redux)和 React 组件的输出结果等。
如何使用 Jest 进行快照测试?
进行快照测试非常简单,您只需要在测试用例中键入以下内容即可:
test('Test name', () => { const output = funcOrComponentToTest() expect(output).toMatchSnapshot() })
此处 funcOrComponentToTest()
是要测试的函数或组件。expect(output)
断言将测试结果 output
与先前记录的快照进行比较。
在第一次运行时,Jest 将会生成一份快照并保存在 .snap
文件中。当运行测试时,Jest 会将当前生成的快照与之前的版本进行比较。如果文件没有更改,则测试将通过,否则测试将失败。
如果测试失败,您需要检查更改,看看是否直接导致的失败,或者您是否需要更新快照。
常见错误
意外更改测试结果
如果您在更新代码之后发现快照测试不再通过,那很可能是您的更改导致了输出的更改。如果您确定更改是必要的,那么您可以使用以下命令来更新快照:
jest --updateSnapshot
快照中包含动态数据
如果您的输出结果包含了动态数据,比如当前的时间戳或者随机数,那么每次测试都会产生不同的结果,进而导致测试始终失败。这时,您可以通过手动配置快照来解决此问题。或者,您可以将动态数据移动到组件中,并在测试中设置固定的值。
新的组件输出结果无法通过测试
如果您在添加新的组件时发现测试无法通过,那么您需要更新快照。Jest 将会创建一份新的快照,并将其与之前的版本进行比较,如果两者不同,那么您需要手动确认更新是否正确才能更新快照。
结论
使用 Jest 进行快照测试可以帮助您轻松地验证代码输出结果是否正确,并防止您在修改代码时破坏之前的功能。Jest 提供了一个轻松且简单的方式来实现这一点,并且可以与 React 应用程序无缝集成。因此,在开发时,请务必记住使用 Jest 进行快照测试!
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/66f24799a44b36ee576547c6