Выберите класс - onChange test - PullRequest
1 голос
/ 16 апреля 2019

Написание модульного теста с использованием JEST JS и Enzyme.В коде есть несколько классов выбора со значением, установленным в другое состояние.

Например: я могу найти следующее:

<Select
   disabled={disabled}
   className={showRequired(checkRequired, this.state.AccountStatus, 'value') ? 'account-select req' : 'account-select'}
   id='custodian-status'
   value={this.state.AccountStatus}
   onChange={(e) => {let val = e ? e.value : null; this.setState({AccountStatus: e})}}
   options={this.state.AccountStatusOptions}
/>

Но не могу найти это, например:

{ type === 'add' &&  
  <div className='account-info-item'>
     <label className='label'>Base Currency:</label>
      <Select
       disabled={disabled}
       className={showRequired(checkRequired, this.state.BaseCurrency, 'value') ? 'account-select req' : 'account-select'}
       id='custodian-status'
       value={this.state.BaseCurrency}
       onChange={(e) => {let val = e ? e.value : null; this.setState({BaseCurrency: e})}}
       options={this.state.BaseCurrencyOptions}
     />
   </div>
   }

Вот мое условие beforeEach:

   beforeEach(() => wrapper = mount(<MemoryRouter keyLength={0}><AccountForm {...baseProps} /></MemoryRouter>));

Вот как я пытаюсь найти его узел:

 wrapper.find('AccountForm').find('Select').props('').onChange(#custodian-status)

Ошибка: метод «props» предназначен длязапускаться на 1 узле.4 найдено вместо.Выбор вызывается 9 раз, а не 4.

Также пробовал следующее:

wrapper.find('AccountForm').find('Select').find('custodian-status').simulate('change')

ошибка: метод «имитация» предназначен для запуска на 1 узле.Вместо этого найдено 0.

1 Ответ

1 голос
/ 16 апреля 2019

Метод find может получить любой элемент, отображаемый на смонтированном дереве. И для симуляции нужны тип события и объект события. Вы можете просто сделать:

wrapper.find('Select').simulate('change', {target { value : 'foo'}})

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...