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

let container = null;

beforeEach(() => { // 设置一个 DOM 元素作为渲染目标 container = document.createElement('div'); document.body.appendChild(container); });

afterEach(() => { // 清理工作 unmountComponentAtNode(container); container.remove(); container = null; });

it('renders timer component correctly', () => { act(() => { render(, container); });

const textElements = container.querySelectorAll('Text');

expect(textElements[0].textContent).toBe('00'); expect(textElements[1].textContent).toBe(':'); expect(textElements[2].textContent).toBe('00'); expect(textElements[3].textContent).toBe(':'); expect(textElements[4].textContent).toBe('00'); expect(textElements[5].textContent).toBe('后开始领取'); });

it('updates timer component correctly', () => { jest.useFakeTimers();

act(() => { render(, container); });

const textElements = container.querySelectorAll('Text');

expect(textElements[0].textContent).toBe('00'); expect(textElements[1].textContent).toBe(':'); expect(textElements[2].textContent).toBe('00'); expect(textElements[3].textContent).toBe(':'); expect(textElements[4].textContent).toBe('00'); expect(textElements[5].textContent).toBe('后开始领取');

act(() => { jest.advanceTimersByTime(1000); });

expect(textElements[0].textContent).toBe('00'); expect(textElements[1].textContent).toBe(':'); expect(textElements[2].textContent).toBe('59'); expect(textElements[3].textContent).toBe(':'); expect(textElements[4].textContent).toBe('59'); expect(textElements[5].textContent).toBe('后开始领取');

act(() => { jest.advanceTimersByTime(59000); });

expect(textElements[0].textContent).toBe('00'); expect(textElements[1].textContent).toBe(':'); expect(textElements[2].textContent).toBe('00'); expect(textElements[3].textContent).toBe(':'); expect(textElements[4].textContent).toBe('00'); expect(textElements[5].textContent).toBe('后开始领取'); });

it('calls onReload function when leftTime is less than 0', () => { jest.useFakeTimers();

const onReload = jest.fn();

act(() => { render(, container); });

expect(onReload).toHaveBeenCalledTimes(1); });


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

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