Я новичок в шутке, поэтому я изо всех сил. Я использую пакет реагировать-выбрать . При выборе элемента он вызывает метод handleChange для вызова с аргументом selectedOption, например {value:'some value'}
. Я хочу проверить, что диспетчеризация вызывается в handleChange и вызывается с правильным объектом.
вот метод handleChange
export class CustomerSelect extends React.Component {
//other code
handleChange = selectedOption => {
const obj = {
type: 'SET_CUSTOMER',
payload: selectedOption.value
};
this.props.dispatch(obj);
};
//other code
}
вот мой тестовый код
let wrapper, instance, dispatch, customers;
beforeEach(() => {
customers = ['test1', 'test2', 'test3'];
dispatch = jest.fn();
wrapper = shallow(<CustomerSelect customers={customers} dispatch={dispatch} />);
instance = wrapper.instance();
});
test('fire off dispatch on change', () => {
const handleChangeSpy = jest.spyOn(instance, 'handleChange');
instance.forceUpdate();
const selectedOption = { value: customers[1] };
const obj = {
type: 'SET_CUSTOMER',
payload: selectedOption.value
};
wrapper.find(Select).simulate('change', { selectedOption });
//check handleChange was called
expect(handleChangeSpy).toHaveBeenCalledWith({
selectedOption
});
//check dispatch was called
expect(dispatch).toHaveBeenCalledWith(obj);
});
То, что происходит, это то, что он не отвечает на выбранный вариант, так как я получаю сообщение об ошибке
Object {
- "payload": "test2",
+ "payload": undefined,
"type": "SET_ACCOUNT",
}
любая помощь будет оценена.