什么时候我们必须使用开玩笑的快照或手动检查?
When we have to use jest snapshots or manual checks?
我有代码可以更改我的 React 组件的状态,我想为它们编写单元测试。
我编写的代码中充满了这些语句:
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" 来测试反应组件?
没有黄金法则可循
快照通过缩短测试代码来简化测试。它们也非常适合将测试结果与复杂对象进行比较。缺点是快照在另一个文件中。当您阅读测试(可能是由其他人编写的)时,您必须打开其他文件并找出此处实际预期的结果。另一个坏处是它们很容易更新到它们不应该更新的东西。
老式断言并不适合比较更大的垃圾数据。但好处是您不会无意中修改测试。你必须通过断言并弄清楚你在做正确的事。
话虽这么说,我遵循了以下协议:
- 如果断言对象很大,使用快照
- 如果断言是针对数组,布尔值,
字符串、数字或小对象,使用旧式断言
我有代码可以更改我的 React 组件的状态,我想为它们编写单元测试。
我编写的代码中充满了这些语句:
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" 来测试反应组件?
没有黄金法则可循
快照通过缩短测试代码来简化测试。它们也非常适合将测试结果与复杂对象进行比较。缺点是快照在另一个文件中。当您阅读测试(可能是由其他人编写的)时,您必须打开其他文件并找出此处实际预期的结果。另一个坏处是它们很容易更新到它们不应该更新的东西。
老式断言并不适合比较更大的垃圾数据。但好处是您不会无意中修改测试。你必须通过断言并弄清楚你在做正确的事。
话虽这么说,我遵循了以下协议:
- 如果断言对象很大,使用快照
- 如果断言是针对数组,布尔值, 字符串、数字或小对象,使用旧式断言