reactjs - 开玩笑更新了状态,但测试还是失败了
问题描述
我一直在为我的注册组件编写测试(通过手动测试一切正常)。
问题是,如果我将状态控制台记录到开玩笑测试中,所有这些状态都会按应有的方式更新,但无论如何测试都会失败。你能帮我么?先感谢您。
注册测试.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: ''
}
}
解决方案
wrapper.state('confirmPasswordValid') 在您调用该方法时为您提供该部分状态的值。如果您想稍后获取可能更改的值,则需要再次调用该方法。
推荐阅读
- reactjs - 在使用 redux-observables 和 RxJS 获取史诗期间重定向
- scala - Scala Slick 将 Rep 子查询组合成一个 re
- javascript - 调用 JavaScript 函数是如何工作的?
- sql-server - 当 BCP 导入/写入到较新的 SQL Server 版本时,旧 SQL Server 版本的 BCP 导出变成亚洲字符集
- java - 不带空格的文本搜索
- json - 如何从 Windows Batch 中的 JSON 文件中获取变量值并将其设置为一个值
- c# - 写出案例的更好解决方案
- ios - 如何在 Xcode 的地图中显示我当前的位置?
- laravel - Laravel / Airlock AJAX 登录 - 419(未知状态)
- node.js - Node.js | "events.js:174 throw er; // 发布到 heroku 后未处理的 'error' 事件"