web-dev-qa-db-fra.com

Passer un objet événement à une enzyme .simuler

J'utilise Jest et Enzyme pour tester un composant de case à cocher React.

Voici mon test:

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')
})

J'obtiens cependant cette erreur lors de l'exécution du test:

TypeError: Cannot read property 'target' of undefined

Ceci est l'entrée pour mon composant:

<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>

Je pense que j'ai besoin de passer un événement comme deuxième objet à simulate mais je ne suis pas sûr comment faire ça.

Merci

18
SeanPlusPlus

simulate la fonction prend d'autres arguments qui seront passés au gestionnaire d'événements. Vous pouvez vous moquer de votre événement. Par exemple.:

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