React-Jest Unit test метод внешнего модуля, который влияет на состояние - PullRequest
0 голосов
/ 22 января 2020

Я работаю над приложением React с использованием Jest.

Я хочу проверить метод компонента импортированного модуля (closemodal):

<Modal
  visible={this.state.showModal}
  closemodal={() => this.setState({ showModal: false })} // <= this one
  type="slideInDown"
>

Я пытался в своем модульном тесте шпионить Модал Метод closemodal, подобный этому:

import Modal from "react-animated-modal";

let spyOnCloseModal;

beforeEach(() => {
  spyOnCloseModal = jest.spyOn(Modal, "closemodal");
  wrapper = shallow(<App />);
});

Но когда работает UT, я получаю эту ошибку: Cannot spy the closemodal property because it is not a function; undefined given instead

1 Ответ

1 голос
/ 22 января 2020

Попробуйте передать фиктивную функцию.

test("checks closemodel", () => {
  const props = {
    closemodal: jest.fn()
  };
  const wrapper = shallow(<Modal {...props} />);

  // trigger your `closemodal` function here

  expect(props.closemodal).toHaveBeenCalledTimes(1);
});
...