web-dev-qa-db-ja.com

イベントオブジェクトを酵素.simulateに渡す

JestとEnzymeを使用して、Reactチェックボックスコンポーネントをテストしています。

これは私のテストです:

it('triggers checkbox onChange event', () => {
  const configs = {
    default: true,
    label: 'My Label',
    element: 'myElement',
  }
  const checkbox = shallow(
    <CheckBox
      configs={configs}
    />
  )
  checkbox.find('input').simulate('click')
})

ただし、テストを実行するとこのエラーが発生します。

TypeError: Cannot read property 'target' of undefined

これは私のコンポーネントの入力です:

<div className="toggle-btn sm">
  <input 
    id={this.props.configs.element} 
    className="toggle-input round" 
    type="checkbox" 
    defaultChecked={ this.props.defaultChecked } 
    onClick={ e => this.onChange(e.target) }
  >
  </input>
</div>

Ithinkthat イベントを2番目のオブジェクトとしてsimulateに渡す必要があります これを行う方法。

ありがとう

18
SeanPlusPlus

simulate 関数は、イベントハンドラーに渡される他の引数を取ります。イベントをモックできます。例えば。:

const mockedEvent = { target: {} }
checkbox.find('input').simulate('click', mockedEvent)
40
madox2