当我们必须使用jest快照或手动检查?

时间:2018-03-01 10:10:55

标签: javascript reactjs unit-testing enzyme snapshot

我有代码,我改变了反应组件的状态,我想为它们编写单元测试。

我写的代码充满了这些陈述:

    expect(component.state().someArray).toBeDefined();
    expect(component.state().someArray).toEqual(EXPECTEDARRAY);

    expect(component.state().someArray.someNestedArray).toBeDefined();        expect(component.state().someArray.someNestedArray).toEqual(EXPECTEDINNERARRAY);

但是,我的一位同事建议我将其更改为:

    expect(component.state()).toMatchSnapshot();
哇,使用快照测试看起来要简单得多。但是,我看到了一些使用我的方法的文章。

所以我的问题是:什么时候应该使用jest的快照和“matchers”来测试反应组件?

1 个答案:

答案 0 :(得分:4)

没有遵循黄金法则

快照通过缩短测试代码来简化测试。它们也非常适合将测试结果与复杂对象进行比较。缺点是快照在另一个文件中。当您阅读测试时(可能是由其他人编写的),您必须打开其他文件并找出实际预期的结果。另一个坏处是它们很容易更新为不需要更新的东西。

旧的时尚断言并不适合比较更大的数据。但好处是你没有不加思索地修改测试。你必须经历断言并弄清楚你做的是正确的事情。

据说,我遵循了以下协议

  • 如果声明的对象很大,请使用快照
  • 如果断言是针对数组,布尔值, 字符串,数字或小对象,使用旧时尚断言