Я пытаюсь протестировать свой компонент customSelect с помощью jest. Однако он выдает ошибку -
Ошибка сопоставления: полученное значение должно быть ложной или шпионской функцией
Вот мой компонент customSelect:
render() {
const updatedProps = assign({}, this.props, {
onChange: value => this.onChange(value, this.props.onChange || false),
onBlur: event => this.onBlur(event, this.props.onBlur || false),
onFocus: event => this.onFocus(event, this.props.onFocus || false),
});
return (<div className='customSelect'><Select ...updatedProps /></div>);
}
onChange:
onChange(value, changeHandler) {
return Promise.resolve(changeHandler && changeHandler(value.value)).then(() => {
!this.componentIsUnmounted && this.setState({
selectedValue: value
}, () => this.validate());
});
}
контрольный пример:
test('verify onChange logic', () => {
const props = {
label: 'label',
options: [
{ value: 'value1', label: 'Value One' },
{ value: 'value2', label: 'Value Two' },
],
defaultValue: 'defaultValue',
onChange: jest.fn(),
};
const onChangeMockFn = jest.fn();
const customSelectComponent = shallow(<CustomSelect {...props} />);
const event = { target: { value: { value: 'testValue' } } };
customSelectComponent.find(Select).simulate('change', event);
expect(customSelectComponent.instance().onChange).toBeCalledWith(event.target.value, jest.fn());
// expect(customSelectComponent.instance().state).toEqual('testValue');
});