如何在反应中测试或从状态中获取价值?

时间:2019-03-28 10:40:32

标签: reactjs redux jestjs enzyme

嗨,你能告诉我如何在反应中测试或从状态中获取价值吗? 出错 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);
  });

enter image description here

1 个答案:

答案 0 :(得分:1)

由于LoginContainer是用HOC包装的,因此您需要导出不具有withStyles HOC的组件,或者在包装器上使用dive来获取组件的实例。另外,statecomponent 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);
  });
});

Working demo