Ложная функция не вызывается в шутку - PullRequest
0 голосов
/ 14 февраля 2019

Я пытаюсь проверить:

onChange(value) {
  this.setState({ postcode: value });
  if (value.length >= 3) this.listSuggestions(value);
}

, написав:

test("onChange updates the state", () => {
  const postalCodeWrapper = mount(<PostalCode />);
  const instance = postalCodeWrapper.instance();
  const listSuggestions = jest.fn(instance.listSuggestions);

  const mockValue = "this is mock value";
  instance.onChange(mockValue);
  expect(instance.state.postcode).toBe(mockValue);
  expect(listSuggestions).toHaveBeenCalled();
});

И это возвращает Expected mock function to have been called, but it was not called., говоря о listSuggestions.Это почему?То же самое происходит, если я удаляю оператор if (value.length >= 3).

1 Ответ

0 голосов
/ 14 февраля 2019

Ваша проблема в этой строке:

const listSuggestions = jest.fn(instance.listSuggestions);

Когда вы вызываете это, jest.fn возвращает новую функцию, не изменяя существующий метод.Вы назначаете его на const, но ваш компонент будет вызывать оригинал.

Измените его на:

instance.listSuggestions = jest.fn(instance.listSuggestions);

Чтобы перезаписать метод компонента с помощью фиктивной функции, которая будетзатем позвоните, если условная проверка прошла успешно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...