Фермент макет функции перед componentWillMount - PullRequest
0 голосов
/ 25 сентября 2018

Я могу смоделировать функцию компонента (используя Jest, Enzyme и React) следующим образом:

let wrapper = shallow(<Component />);
wrapper.instance().load = jest.fn(function(ref) {
  this.setState({ loading: false, notice: {thing: 'thing'} });
});
wrapper.update();

Моя load функция фактически вызывается componentWillMount. кажется , что componentWillMount вызывается до Я перегружаю функцию.

Так есть ли способ смоделировать функцию до фактической сборки компонента?

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

Существует еще один подход, у вас есть доступ к componentWillMount в вашем экземпляре оболочки.После того, как вы назначите функцию загрузки как jest.fn, вы можете вызывать componentWillMount из экземпляра оболочки.

wrapper.instance().load = jest.fn();
wrapper.instance().componentWillMount();
expect(wrapper.instance().load).toHaveBeenCalled();

Вот ссылка на рабочую песочницу https://codesandbox.io/s/6ym0r4z96w

0 голосов
/ 25 сентября 2018

Если вы измените прототип Компонента, экземпляры этого Компонента будут наследовать измененную функцию:

Component.prototype.load = jest.fn(function(ref) {
  this.setState({ loading: false, notice: {thing: 'thing'} });
});
let wrapper = shallow(<Component />);
...