Jest Snapshot 测试与单元测试?

IT技术 unit-testing reactjs jestjs
2021-05-17 17:10:07

在 Jest 中实现快照测试相当容易,但我对此不太满意,因为感觉我实际上并没有在测试任何东西。在单元测试中,我可以轻松地测试我的组件,并对它们的实际行为提出期望,并测试它们应该呈现的内容。但是我所看到的关于快照测试的全部内容是,当您更改某些内容并显示差异时,它会产生收益!我可以使用git diff app.js!

3个回答

您可以将快照测试视为具有自动生成的组件假设的单元测试。

优点是您无需编写大量代码即可轻松测试复杂结构,当发生变化时您会收到很好的警告,并且您可以轻松更新此测试。

缺点是,仅仅通过阅读测试,并不总是清楚测试了什么以及预期的行为是什么,可能会发生创建的快照非常复杂,以至于您忽略了错误的假设,然后最终成为预期的结果,并且更新快照非常容易,错误的东西可能会潜入。

因此,在使用快照测试时,让它们更加细化非常重要,因此并不总是测试整个组件,而是进行一些较小的测试来测试它的一部分,并拥有良好的代码审查文化,以发现快照中的错误。

您应该同时编写快照和单元测试。 快照测试将在渲染时检查更改,例如 className、内联样式、某些条件渲染或循环是否不像以前那样工作。您仍然应该为无法通过简单渲染检查的任何功能编写单元测试(如果单击时调用 onClick 等)。

感谢这个线程上的每个人。我对 React 相当陌生,但刚刚开始研究它的单元测试,并且想知道同样的事情。就像,如果我有一个地址组件,其中唯一真正的逻辑是是否内联呈现地址或邮政风格。我决定在这里进行快照测试。但是当谈到验证交互性和状态变化时,我想这就是酶的用武之地,以及更标准的非用户界面测试。