我一直在为我的 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: ''
}
}
答案 0 :(得分:0)
wrapper.state('confirmPasswordValid') 为您提供调用该方法时该部分状态的值。如果您想稍后获取可能更改的值,则需要再次调用该方法。