jest 更新状态,但测试还是失败了

时间:2021-02-15 17:28:40

标签: reactjs jestjs enzyme

我一直在为我的 Signup 组件编写测试(通过手动测试一切正常)。

问题是,如果我将状态 console.log 记录到 jest 测试中,所有状态都会按照应有的方式进行更新,但无论如何测试都会失败。你能帮我么?提前致谢。

signup.test.js

    it('changes the state correctly', () => {

        let wrapper = mount(<Signup />);

        const confirmPasswordValidState = wrapper.state('confirmPasswordValid'); // default false

        expect(confirmPasswordValidState).toEqual(false); // it passes

        wrapper = wrapper.update();        
    
        wrapper.find('#password-test').props().onChange({ target: { name: 'password', value: 'maurosorrentino' }});

        wrapper.find('#confirmPassword-test').props().onChange({ target: { name: 'confirmPassword', value: 'maurosorrentino' }});

        wrapper.find('#email-test').props().onChange({ target: { name: 'email', value: 'maurosorrentino@test.com' }});

        wrapper.find('#name-test').props().onChange({ target: { name: 'name', value: 'maurosorrentino' }});

        wrapper = wrapper.update();

        console.log(confirmPasswordValidState); // false why?
        console.log(wrapper.state()); // states change as they should (so in this case is true)
    
        expect(confirmPasswordValidState).toBeTruthy();

    }); 

我从我的 console.logs 得到这个

  console.log
false                                     // console.log(confirmPasswordValidState);

  console.log                             // console.log(wrapper.state())
{
  email: 'maurosorrentino@test.com',
  name: 'maurosorrentino',
  password: 'maurosorrentino',
  confirmPassword: 'maurosorrentino',
  loading: false,
  emailValid: [
    'maurosorrentino@test.com',
    'maurosorrentino',
    'test.',
    'com',
    index: 0,
    input: 'maurosorrentino@test.com',
    groups: undefined
  ],
  passwordValid: true,
  confirmPasswordValid: true,
  nameValid: true,
  formValid: true,
  message: null,
  formErrors: {
    email: '',
    password: '',
    name: '',
    confirmPasswordValid: '',
    confirmPassword: ''
  }
}

1 个答案:

答案 0 :(得分:0)

wrapper.state('confirmPasswordValid') 为您提供调用该方法时该部分状态的值。如果您想稍后获取可能更改的值,则需要再次调用该方法。