使用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。
答案 0 :(得分:1)
find方法可以获取在已挂载的树上呈现的任何元素。并且模拟需要一个事件类型和一个事件对象。您可以这样做:
wrapper.find('Select').simulate('change', {target { value : 'foo'}})