-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathuseDebounceEffect.test.ts
More file actions
44 lines (33 loc) · 1.32 KB
/
useDebounceEffect.test.ts
File metadata and controls
44 lines (33 loc) · 1.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import { renderHook, act } from '@testing-library/react-hooks';
import useDebounceEffect from './useDebounceEffect';
jest.useFakeTimers();
describe('useDebounceEffect 테스트. debounce 제한 딜레이를 0.5초로 둘 경우', () => {
test('0.499초 지났을 때, 한 번도 실행되지 않는다.', () => {
const fn = jest.fn();
const { rerender } = renderHook(({ deps, delay }) => useDebounceEffect(fn, deps, delay), {
initialProps: { deps: 'dependency1', delay: 500 },
});
expect(fn).not.toBeCalled();
rerender({ deps: 'dependency2', delay: 500 });
rerender({ deps: 'dependency3', delay: 500 });
rerender({ deps: 'dependency4', delay: 500 });
act(() => {
jest.advanceTimersByTime(499);
});
expect(fn).not.toBeCalled();
});
test('0.5초 지났을 때, 한 번만 실행되지 않는다.', () => {
const fn = jest.fn();
const { rerender } = renderHook(({ deps, delay }) => useDebounceEffect(fn, deps, delay), {
initialProps: { deps: 'dependency1', delay: 500 },
});
expect(fn).not.toBeCalled();
rerender({ deps: 'dependency2', delay: 500 });
rerender({ deps: 'dependency3', delay: 500 });
rerender({ deps: 'dependency4', delay: 500 });
act(() => {
jest.advanceTimersByTime(500);
});
expect(fn).toBeCalledTimes(1);
});
});