Метод модульного тестирования, который вызывает clearInterval с Jest и Enzyme в React - PullRequest
0 голосов
/ 06 июля 2018

У меня есть этот компонент React, и у него есть метод, который вызывает clearInterval для очистки интервала, установленного другим методом

class SomeComponent extends React.Component {
  setIntervalMethod = () => {
    this.interval = setInterval(this.method, 1000)
  }
  claerIntervalMethod = () => {
    clearInterval(this.interval)
  }
  
  render = () => null
}

Как мне проверить этот метод?

отредактировано: добавить тест, который я сделал

it('should call clearInterval()', () => {
  const mounted = shallow(<SomeComponent/>)
  const clearIntervalMethod = mounted.instance().clearIntervalMethod

  jest.useFakeTimers()
  clearIntervalMethod()
  expect(clearInterval).toHaveBeenCalledWith(expect.any(Function))
})

Я несколько дней гуглял, пытался использовать jest.useFakeTimers(), звонить expect(clearInterval).toHaveBeenCalledWith(expect.any(Function), 1000) и много других нелепых способов проверить этот метод, который я забыл, но все безрезультатно.

Так что ... если у кого-нибудь есть решение и достаточно любезное, чтобы поделиться здесь, я мог бы провести эти выходные со счастливым улыбающимся лицом и сердцем, полным радости.

Заранее спасибо. Ура!

1 Ответ

0 голосов
/ 08 июля 2018

setInterval возвращает число , а не функцию. Попробуйте:

expect(clearInterval).toHaveBeenCalledWith(expect.any(Number))

Кроме того, как уже упоминалось в моем комментарии, в вашем примере написано с ошибкой (не уверен, что это фактический код).

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