🦔

JestでsetIntervalのテストをする

2021/02/21に公開

setIntervalをテストで使う場合、timerのモックが必要です。
実際の時間が経過するまで待つと、テストの実行時間がながくなるので、

jest.useFakeTimers();
var time = 0;
function interval() {
  setTimeout(() => {
    time += 1;
  });
}

test('interval',() => {
  //timerをmock
  jest.useFakeTimers();
  
  expect(time).toBe(0);
  
  // 1000ミリ秒経過させる
  jest.advanceTimersByTime(1000);
  expect(time).toBe(1);
  
  // 2000ミリ秒経過させる
  jest.advanceTimersByTime(2000);
  expect(time).toBe(2);
})

Discussion