/**
* BaseChart 组件基础测试
*/
import React from 'react';
import { render } from '@testing-library/react';
import '@testing-library/jest-dom';
import { BaseChart } from '../../src/components/BaseChart';
declare const describe: any;
declare const it: any;
declare const expect: any;
declare const beforeEach: any;
declare const afterEach: any;
declare const jest: 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('BaseChart 组件', () => {
beforeEach(() => {
jest.clearAllMocks();
});
afterEach(() => {
jest.restoreAllMocks();
});
it('应该渲染 Canvas 元素', () => {
const { container } = render(
);
const canvas = container.querySelector('canvas');
expect(canvas).toBeInTheDocument();
});
it('应该设置正确的 canvas-id 和 id 属性', () => {
const { container } = render(
);
const canvas = container.querySelector('canvas') as HTMLCanvasElement;
expect(canvas).toHaveAttribute('canvas-id', 'test-chart');
expect(canvas).toHaveAttribute('id', 'test-chart');
});
it('应该使用指定的宽高', () => {
const { container } = render(
);
const canvas = container.querySelector('canvas') as HTMLCanvasElement;
expect(canvas?.style.width).toBe('600px');
expect(canvas?.style.height).toBe('400px');
});
it('应该支持触摸事件处理', () => {
const onTouchStart = jest.fn();
const onTouchMove = jest.fn();
const onTouchEnd = jest.fn();
const { container } = render(
);
const canvas = container.querySelector('canvas');
expect(canvas).toBeInTheDocument();
});
});