Тестовая отправка вызывается с правильным obj внутри метода handleChange - PullRequest
0 голосов
/ 28 мая 2019

Я новичок в шутке, поэтому я изо всех сил. Я использую пакет реагировать-выбрать . При выборе элемента он вызывает метод 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",
  }

любая помощь будет оценена.

1 Ответ

1 голос
/ 28 мая 2019

Я думаю, что вы отправляете неверный параметр, попробуйте

wrapper.find(Select).simulate('change', selectedOption);

//check handleChange was called
expect(handleChangeSpy).toHaveBeenCalledWith(selectedOption);
expect(dispatch).toHaveBeenCalledWith(obj);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...