/** * ColumnChart 组件基础测试 */ import React from 'react'; import { render } from '@testing-library/react'; import '@testing-library/jest-dom'; import { ColumnChart } from '../../src/components/ColumnChart'; declare const jest: any; declare const describe: any; declare const it: any; declare const expect: any; declare const beforeEach: any; declare const afterEach: any; // Mock @tarojs/components jest.mock('@tarojs/components', () => ({ Canvas: ({ children, ...props }: any) => React.createElement('canvas', props, children) })); // Mock uCharts jest.mock('../../src/lib/charts/index.ts', () => ({ uCharts: jest.fn().mockImplementation(() => ({ showToolTip: jest.fn(), scrollStart: jest.fn(), scroll: jest.fn(), scrollEnd: jest.fn() })) })); describe('ColumnChart 组件', () => { beforeEach(() => { jest.clearAllMocks(); }); afterEach(() => { jest.restoreAllMocks(); }); it('应该渲染 Canvas 元素', () => { const { container } = render( ); const canvas = container.querySelector('canvas'); expect(canvas).toBeInTheDocument(); }); it('应该使用柱状图类型', () => { const { uCharts } = require('../../src/lib/charts/index.ts'); render( ); expect(uCharts).toHaveBeenCalledWith( expect.objectContaining({ type: 'column' }) ); }); it('应该支持分组模式', () => { const { uCharts } = require('../../src/lib/charts/index.ts'); render( ); expect(uCharts).toHaveBeenCalledWith( expect.objectContaining({ extra: expect.objectContaining({ column: expect.objectContaining({ type: 'group' }) }) }) ); }); it('应该支持堆叠模式', () => { const { uCharts } = require('../../src/lib/charts/index.ts'); render( ); expect(uCharts).toHaveBeenCalledWith( expect.objectContaining({ extra: expect.objectContaining({ column: expect.objectContaining({ type: 'stack' }) }) }) ); }); it('应该支持自定义 tooltip 格式化', () => { const tooltipFormatter = jest.fn((item: any, category: any) => `${category}: ${item.data}`); const { container } = render( ); const canvas = container.querySelector('canvas'); expect(canvas).toBeInTheDocument(); }); it('应该支持数据标签显示/隐藏', () => { const { uCharts } = require('../../src/lib/charts/index.ts'); render( ); expect(uCharts).toHaveBeenCalledWith( expect.objectContaining({ dataLabel: false }) ); }); });