тестирование функции в javascript - PullRequest
0 голосов
/ 27 октября 2018

У меня есть следующая функция onClick

onClickFunction= index => () => {
  this.setState({ activeIndex: index });
}

Который используется в следующей функции

getPersons= (persons) => persons
  .map((person, index) => (
     <StyledComponentHeader
        key...
        ...
        onClick={this.onClickFunction(index)}
      >
        <Styled2
          ...
        >
          {person.name}
        </Styled2>
      </StyledComponentHeader>
    ))

в моем модульном тесте мне нужно проверить onClickFunction. в настоящее время у меня есть что-то вроде этого

const component= (
  <StyledComponent
    persons={persons}
  />);

describe('...', () => {
  beforeEach(() => {
    wrapper = shallow(component);
});

it('testing name', () => {
  expect(wrapper).toMatchSnapshot();
  expect(wrapper.state().activeIndex).toEqual(0);
  wrapper.instance().onClickFunction(1);
  expect(wrapper.state().activeIndex).toEqual(1);
});

возвращает сообщение о том, что последним except должно быть 0. Как правильно проверить эту функцию?

1 Ответ

0 голосов
/ 27 октября 2018

Поскольку onClickFunction не изменяет состояние, но возвращает функцию, которая при вызове изменяет состояние, логическим способом было бы проверить его с помощью

wrapper.instance().onClickFunction(1)();

(, обратите внимание на добавленное() в конце для вызова возвращенной функции )

...