Как протестировать или получить значение из состояния в react?

#reactjs #redux #jestjs #enzyme

#reactjs #redux #jestjs #фермент

Вопрос:

Привет, не могли бы вы, пожалуйста, рассказать мне, как протестировать или получить значение из состояния в react? ошибка получения wrapper.instance(…).handleClickShowPassword не является функцией

вот мой код https://codesandbox.io/s/l2lk4n794l

 it("toggle showpassword value", () => {
    wrapper.setState({ showPassword: false });
    wrapper.instance().handleClickShowPassword();

    expect(wrapper.state.showPassword).toEqual(true);
  });
  

введите описание изображения здесь

Ответ №1:

Поскольку LoginContainer это приложение, обернутое в HOC, вам нужно либо экспортировать компонент без withStyles HOC, либо использовать dive в оболочке, чтобы получить экземпляр компонента. Также state включена функция component instance , и, следовательно, вам нужно вызвать ее для доступа к состоянию

 describe("<LoginContainer/>", () => {
  let wrapper;
  beforeEach(() => {
    wrapper = shallow(<LoginContainer />);
  });

  it("toggle showpassword value", () => {
    const comp = wrapper.dive();
    comp.dive().setState({ showPassword: false });
    comp.instance().handleClickShowPassword();
    expect(comp.state("showPassword")).toEqual(true);
  });
});
  

Рабочая демонстрация