Passing an event object to enzyme .simulate

enzyme, javascript, jestjs, reactjs

Solution

`simulate` function takes other arguments which will be passed to the event handler. You can mock your event. E.g.:

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

Problem

I am using Jest and Enzyme to test a React checkbox component. This is my 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') }) ``` I get this error however when running the test: ``` TypeError: Cannot read property 'target' of undefined ``` This is the input for my component: ``` <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> ``` I think that I need to pass an event as the second object to `simulate` but I am not sure how to do this. Thanks

Original source