选择课程-onChange测试

时间:2019-04-16 12:31:19

标签: reactjs unit-testing jestjs

使用JEST JS和酶编写单元测试。 代码中有一些选择类,其值设置为不同的状态。

例如: 我可以找到以下内容:

<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(() => wrapper = mount(<MemoryRouter keyLength={0}><AccountForm {...baseProps} /></MemoryRouter>));

这是我尝试查找其节点的方式:

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

错误:方法“ props”应在1个节点上运行。找到4个代替。 Select被调用9次而不是4次。

还尝试了以下操作:

wrapper.find('AccountForm').find('Select').find('custodian-status').simulate('change')
错误:方法“模拟”应在1个节点上运行。改为找到0。

1 个答案:

答案 0 :(得分:1)

find方法可以获取在已挂载的树上呈现的任何元素。并且模拟需要一个事件类型和一个事件对象。您可以这样做:

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