Jest快照测试与单元测试?

时间:2017-05-03 23:31:40

标签: unit-testing reactjs jestjs

在开玩笑中实现快照测试相当容易,但这是我不太满意的事情,因为感觉我实际上并没有测试任何东西。在单元测试中,我可以轻松地将我的组件置于测试之下并对其实际行为提出期望,并测试它们应该呈现的内容。但是我所能看到的有关快照测试的一点是,当你改变某些东西并向你显示差异时它会产生!我可以使用git diff app.js

来做到这一点

3 个答案:

答案 0 :(得分:19)

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

优点是您可以轻松地测试复杂的结构而无需编写大量代码,在发生更改时可以获得良好的警告,并且可以轻松更新此测试。

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

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

答案 1 :(得分:8)

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

答案 2 :(得分:5)

感谢大家在这个帖子上。我对React很新,但刚开始看单元测试它,并且想知道同样的事情。就像,如果我有一个地址组件,其中唯一真正的逻辑是是否呈现地址内联或邮政风格。我决定在这里进行快照测试。但是当谈到验证交互性和状态变化时,我想这就是酶的来源,以及更标准的非ui测试。