OnBlur неправильно называют - фермент-шут - PullRequest
2 голосов
/ 07 марта 2019

Вот код, который я пытаюсь проверить

updateUser = (e) => {
  var tempUser = this.state.user;
  switch(e.target.id){
    case "email":
      tempUser.Email = e.target.value;
      break;
    case "userName":
      tempUser.Username = e.target.value;
      break;
    default:
      break;
  }

  this.setState({
    user: tempUser,
  })

render() {
.....
  <tr key='userName' className='add-user-table-row'>
  <input id='userName' onBlur={this.updateUser} className='user-value-field' defaultValue=''/> </td>

А вот мой тест: тест в данный момент проходит, но не влияет на его покрытие.Какой-либо причине ?Спасибо

it('Testing the userName onBlur', () => {
  wrapper.setState({
    user:{
      Username:'Username-Test'
    }
  });
  wrapper.find('input[id="userName"]').simulate('blur', {target: { value:'Username-Test'}});
  expect(wrapper.state('user')).toEqual('Username-Test'); //remove this line??
});

Ответы [ 2 ]

2 голосов
/ 07 марта 2019

Вы можете попробовать принудительно обновить упаковщик

it('Testing the userName onBlur', (done) => {
  wrapper.setState({
    user: {
      Username: 'Username-Test'
    }
  });

  process.nextTick(() => {
    wrapper.update();
    wrapper.find('input[id="userName"]').simulate('blur', {
      target: {
        value: 'Username-Test'
      }
    });
    expect(wrapper.state('user')).toEqual('Username-Test');
    done();
  })
});
1 голос
/ 07 марта 2019

Поскольку ваш код проверяет id:

updateUser = (e) => {
  var tempUser = this.state.user;
  switch(e.target.id){
  ...
  case "userName":
    tempUser.Username = e.target.value;

Вам необходимо передать соответствующее значение id, в противном случае case не будет соответствовать

wrapper.find('input[id="userName"]')
  .simulate('blur', {
    target: { 
      value:'Username-Test', 
      id: 'userName'
    }
  });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...