Reactjs 反应&;酶:为什么不是';在每一次工作之前你都做了什么?

Reactjs 反应&;酶:为什么不是';在每一次工作之前你都做了什么?,reactjs,testing,jestjs,enzyme,Reactjs,Testing,Jestjs,Enzyme,我正在编写第一个React测试,遇到了一个问题,我的beforeach语句都不起作用。这是我的测试文件: import React from 'react'; import { shallow } from 'enzyme'; import Home from '../components/Home'; import IntroText from '../components/IntroText'; import Form from '../components/Form'; describe

我正在编写第一个React测试,遇到了一个问题,我的
beforeach
语句都不起作用。这是我的测试文件:

import React from 'react';
import { shallow } from 'enzyme';
import Home from '../components/Home';
import IntroText from '../components/IntroText';
import Form from '../components/Form';

describe('<Home />', () => {
  beforeEach(() => {
    const wrapper = shallow(<Home />);
  });

  it('renders the IntroText component', () => {
    expect(wrapper.find(IntroText).length).toBe(1);
  });

  it('renders the Form component', () => {
    expect(wrapper.find(Form).length).toBe(1);
  });
});
当测试运行时,我遇到此错误:

ReferenceError: wrapper is not defined

我遗漏了什么?

如果在每个作用域之前定义了
范围内的包装常量,请将其移到外部,如下所示:

import React from 'react';
import { shallow } from 'enzyme';
import Home from '../components/Home';
import IntroText from '../components/IntroText';
import Form from '../components/Form';

describe('<Home />', () => {
  let wrapper;
  beforeEach(() => {
    wrapper = shallow(<Home />);
  });

  it('renders the IntroText component', () => {
    expect(wrapper.find(IntroText).length).toBe(1);
  });

  it('renders the Form component', () => {
    expect(wrapper.find(Form).length).toBe(1);
  });
});

谢谢,非常感谢!这是范围的经典示例!如果您仍然没有定义:-我在测试中需要的对象上尝试了这种方法(它是在beforeach()中定义的)&然后在测试语句中引用/使用,但仍然没有定义。即使使用
this.myobject
approach^^。我阅读了Jest文档,看起来它们似乎在导入下方的全局/顶级范围中定义了对象本身,然后在
beforeach()中指定它是什么
然后可以在测试语句中使用它。
import React from 'react';
import { shallow } from 'enzyme';
import Home from '../components/Home';
import IntroText from '../components/IntroText';
import Form from '../components/Form';

describe('<Home />', () => {
  let wrapper;
  beforeEach(() => {
    wrapper = shallow(<Home />);
  });

  it('renders the IntroText component', () => {
    expect(wrapper.find(IntroText).length).toBe(1);
  });

  it('renders the Form component', () => {
    expect(wrapper.find(Form).length).toBe(1);
  });
});
import React from 'react';
import { shallow } from 'enzyme';
import Home from '../components/Home';
import IntroText from '../components/IntroText';
import Form from '../components/Form';

describe('<Home />', function() {
  beforeEach(function() {
    this.wrapper = shallow(<Home />);
  });

  it('renders the IntroText component', function() {
    expect(this.wrapper.find(IntroText).length).toBe(1);
  });

  it('renders the Form component', function() {
    expect(this.wrapper.find(Form).length).toBe(1);
  });
});