Javascript 在描述试块和每个试块中定义浅层之间的差异?

Javascript 在描述试块和每个试块中定义浅层之间的差异?,javascript,reactjs,unit-testing,jestjs,enzyme,Javascript,Reactjs,Unit Testing,Jestjs,Enzyme,假设我们有以下组件树: 真菌成分 组成部分1 构成部分2 构成部分3 Mycomponent是所有者组件,包含三个子组件 我们要检查的是每个组件的渲染是否正确 我可以通过使用浅层渲染进行测试,如下所示: it('renders <Component1 /> component', () => { const wrapper = shallow(<Mycomponent/>); expect(wrapper.find(Component1). le

假设我们有以下组件树: 真菌成分 组成部分1 构成部分2 构成部分3

Mycomponent是所有者组件,包含三个子组件

我们要检查的是每个组件的渲染是否正确

我可以通过使用浅层渲染进行测试,如下所示:

  it('renders <Component1 /> component', () => {
    const wrapper = shallow(<Mycomponent/>);
    expect(wrapper.find(Component1). length).toHavelengthOf(1);
  });

  it('renders <Component2 /> component', () => {
    const wrapper = shallow(<Mycomponent/>);
    expect(wrapper.find(Component2). length).toHavelengthOf(1);
 });
it('呈现组件',()=>{
常量包装器=浅();
expect(wrapper.find(Component1.length).toHavelengthOf(1);
});
它('呈现组件',()=>{
常量包装器=浅();
expect(wrapper.find(Component2.length).toHavelengthOf(1);
});

不是为每个测试定义包装器,而是可以在描述块范围中定义它,这样每个测试都可以到达该包装器,这样我就不必为每个测试定义它了吗

您可以在每个块之前的
中使用
。您最好为每个测试用例获得一个新的包装器。这样每个测试用例的结果都不会受到影响。在测试用例之间保持良好的隔离

例如

index.tsx

import React,{Component}来自'React';
导出常量组件1=()=>组件1;
导出常量组件2=()=>组件2;
导出常量组件3=()=>组件3;
类MyComponent扩展组件{
render(){
返回(
);
}
}
导出默认MyComponent;
index.test.tsx

从“/”导入MyComponent;
从“/”导入{Component1,Component2,Component3};
从“React”导入React;
从“酶”导入{shall};
描述('59980692',()=>{
让包装纸;
在每个之前(()=>{
包装器=浅();
});
它('呈现组件',()=>{
expect(wrapper.find(Component1)).toHaveLength(1);
});
它('呈现组件',()=>{
expect(wrapper.find(Component2)).toHaveLength(1);
});
它('呈现组件',()=>{
expect(wrapper.find(Component3)).toHaveLength(1);
});
});
单元测试结果:

通过src/stackoverflow/59980692/index.test.tsx(15.157s)
59980692
✓ 渲染组件(57ms)
✓ 渲染组件(4ms)
✓ 渲染组件(6ms)
测试套件:1个通过,共1个
测试:3次通过,共3次
快照:共0个
时间:17.468秒