输入下面代码的jest单元测试代码:import React Component from react;import StyleSheet View Text from react-native;import scaleSize from utilslayout; export default class Timer extends Component constructorpro
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(
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(
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(
expect(onReload).toHaveBeenCalledTimes(1); });
原文地址: https://www.cveoy.top/t/topic/hJkq 著作权归作者所有。请勿转载和采集!