import React from 'react';
import { render, unmountComponentAtNode } from 'react-dom';
import Timer from '../Timer';

jest.useFakeTimers();

describe('Timer', () => {
  let container = null;

  beforeEach(() => {
    container = document.createElement('div');
    document.body.appendChild(container);
  });

  afterEach(() => {
    unmountComponentAtNode(container);
    container.remove();
    container = null;
  });

  it('renders without crashing', () => {
    render(<Timer />, container);
  });

  it('starts the timer', () => {
    const leftTime = 3600; // 1 hour
    render(<Timer leftTime={leftTime} />, container);

    expect(container.textContent).toContain('00:00:00');

    jest.advanceTimersByTime(1000); // advance 1 second

    expect(container.textContent).toContain('00:59:59');

    jest.advanceTimersByTime(60000); // advance 1 minute

    expect(container.textContent).toContain('00:58:59');

    jest.advanceTimersByTime(3600000); // advance 1 hour

    expect(container.textContent).toContain('23:58:59');
  });

  it('calls onReload when leftTime is less than 0', () => {
    const onReload = jest.fn();
    const leftTime = -1;
    render(<Timer leftTime={leftTime} onReload={onReload} />, container);

    expect(onReload).toHaveBeenCalled();
  });
});

原文地址: https://www.cveoy.top/t/topic/fw94 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录