🦔
JestでsetIntervalのテストをする
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