| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337 |
- // Taro组件mock配置
- // 从mini/tests/setup.ts中复制的完整mock配置
- // 这个文件应该在其他包的jest.config.cjs中通过setupFilesAfterEnv引用
- import '@testing-library/jest-dom'
- // 扩展全局类型以支持 Taro 配置测试
- declare var defineAppConfig: (config: any) => any
- /* eslint-disable react/display-name */
- // 设置环境变量
- process.env.TARO_ENV = 'h5'
- process.env.TARO_PLATFORM = 'web'
- process.env.SUPPORT_TARO_POLYFILL = 'disabled'
- // 定义 defineAppConfig 全局函数用于测试 Taro 配置文件
- ;(global as any).defineAppConfig = (config: any) => config
- // Mock Taro 组件
- // eslint-disable-next-line react/display-name
- jest.mock('@tarojs/components', () => {
- const React = require('react')
- const MockView = React.forwardRef((props: any, ref: any) => {
- const { children, ...restProps } = props
- return React.createElement('div', { ...restProps, ref }, children)
- })
- MockView.displayName = 'MockView'
- const MockScrollView = React.forwardRef((props: any, ref: any) => {
- const {
- children,
- onScroll,
- onTouchStart,
- onScrollEnd,
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
- scrollY,
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
- showScrollbar,
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
- scrollTop,
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
- scrollWithAnimation,
- ...restProps
- } = props
- return React.createElement('div', {
- ...restProps,
- ref,
- onScroll: (e: any) => {
- if (onScroll) onScroll(e)
- },
- onTouchStart: (e: any) => {
- if (onTouchStart) onTouchStart(e)
- },
- onTouchEnd: () => {
- if (onScrollEnd) onScrollEnd()
- },
- style: {
- overflow: 'auto',
- height: '200px',
- ...restProps.style
- }
- }, children)
- })
- MockScrollView.displayName = 'MockScrollView'
- return {
- View: MockView,
- ScrollView: MockScrollView,
- Text: (() => {
- const MockText = React.forwardRef((props: any, ref: any) => {
- const { children, ...restProps } = props
- return React.createElement('span', { ...restProps, ref }, children)
- })
- MockText.displayName = 'MockText'
- return MockText
- })(),
- Button: (() => {
- const MockButton = React.forwardRef((props: any, ref: any) => {
- const { children, ...restProps } = props
- return React.createElement('button', { ...restProps, ref }, children)
- })
- MockButton.displayName = 'MockButton'
- return MockButton
- })(),
- Input: (() => {
- const MockInput = React.forwardRef((props: any, ref: any) => {
- const { ...restProps } = props
- return React.createElement('input', { ...restProps, ref })
- })
- MockInput.displayName = 'MockInput'
- return MockInput
- })(),
- Textarea: (() => {
- const MockTextarea = React.forwardRef((props: any, ref: any) => {
- const { children, ...restProps } = props
- return React.createElement('textarea', { ...restProps, ref }, children)
- })
- MockTextarea.displayName = 'MockTextarea'
- return MockTextarea
- })(),
- Image: (() => {
- const MockImage = React.forwardRef((props: any, ref: any) => {
- const { ...restProps } = props
- return React.createElement('img', { ...restProps, ref })
- })
- MockImage.displayName = 'MockImage'
- return MockImage
- })(),
- Form: (() => {
- const MockForm = React.forwardRef((props: any, ref: any) => {
- const { children, ...restProps } = props
- return React.createElement('form', { ...restProps, ref }, children)
- })
- MockForm.displayName = 'MockForm'
- return MockForm
- })(),
- Label: (() => {
- const MockLabel = React.forwardRef((props: any, ref: any) => {
- const { children, ...restProps } = props
- return React.createElement('label', { ...restProps, ref }, children)
- })
- MockLabel.displayName = 'MockLabel'
- return MockLabel
- })(),
- Picker: (() => {
- const MockPicker = React.forwardRef((props: any, ref: any) => {
- const { children, ...restProps } = props
- return React.createElement('div', { ...restProps, ref }, children)
- })
- MockPicker.displayName = 'MockPicker'
- return MockPicker
- })(),
- Switch: (() => {
- const MockSwitch = React.forwardRef((props: any, ref: any) => {
- const { ...restProps } = props
- return React.createElement('input', { type: 'checkbox', ...restProps, ref })
- })
- MockSwitch.displayName = 'MockSwitch'
- return MockSwitch
- })(),
- Slider: (() => {
- const MockSlider = React.forwardRef((props: any, ref: any) => {
- const { ...restProps } = props
- return React.createElement('input', { type: 'range', ...restProps, ref })
- })
- MockSlider.displayName = 'MockSlider'
- return MockSlider
- })(),
- Radio: React.forwardRef((props: any, ref: any) => {
- const { children, ...restProps } = props
- return React.createElement('input', { type: 'radio', ...restProps, ref }, children)
- }),
- RadioGroup: React.forwardRef((props: any, ref: any) => {
- const { children, ...restProps } = props
- return React.createElement('div', { ...restProps, ref }, children)
- }),
- Checkbox: React.forwardRef((props: any, ref: any) => {
- const { children, ...restProps } = props
- return React.createElement('input', { type: 'checkbox', ...restProps, ref }, children)
- }),
- CheckboxGroup: React.forwardRef((props: any, ref: any) => {
- const { children, ...restProps } = props
- return React.createElement('div', { ...restProps, ref }, children)
- }),
- Progress: React.forwardRef((props: any, ref: any) => {
- const { ...restProps } = props
- return React.createElement('progress', { ...restProps, ref })
- }),
- RichText: React.forwardRef((props: any, ref: any) => {
- const { children, ...restProps } = props
- return React.createElement('div', { ...restProps, ref }, children)
- }),
- MovableArea: React.forwardRef((props: any, ref: any) => {
- const { children, ...restProps } = props
- return React.createElement('div', { ...restProps, ref }, children)
- }),
- MovableView: React.forwardRef((props: any, ref: any) => {
- const { children, ...restProps } = props
- return React.createElement('div', { ...restProps, ref }, children)
- }),
- Swiper: React.forwardRef((props: any, ref: any) => {
- const { children, ...restProps } = props
- return React.createElement('div', { ...restProps, ref }, children)
- }),
- SwiperItem: React.forwardRef((props:any, ref: any) => {
- const { children, ...restProps } = props
- return React.createElement('div', { ...restProps, ref }, children)
- }),
- Navigator: React.forwardRef((props: any, ref: any) => {
- const { children, ...restProps } = props
- return React.createElement('a', { ...restProps, ref }, children)
- }),
- Audio: React.forwardRef((props: any, ref: any) => {
- const { ...restProps } = props
- return React.createElement('audio', { ...restProps, ref })
- }),
- Video: React.forwardRef((props: any, ref: any) => {
- const { children, ...restProps } = props
- return React.createElement('video', { ...restProps, ref }, children)
- }),
- Camera: React.forwardRef((props: any, ref: any) => {
- const { children, ...restProps } = props
- return React.createElement('div', { ...restProps, ref }, children)
- }),
- LivePlayer: React.forwardRef((props: any, ref: any) => {
- const { children, ...restProps } = props
- return React.createElement('div', { ...restProps, ref }, children)
- }),
- LivePusher: React.forwardRef((props: any, ref: any) => {
- const { children, ...restProps } = props
- return React.createElement('div', { ...restProps, ref }, children)
- }),
- Map: React.forwardRef((props: any, ref: any) => {
- const { children, ...restProps } = props
- return React.createElement('div', { ...restProps, ref }, children)
- }),
- Canvas: React.forwardRef((props: any, ref: any) => {
- const { children, ...restProps } = props
- return React.createElement('canvas', { ...restProps, ref }, children)
- }),
- OpenData: React.forwardRef((props: any, ref: any) => {
- const { children, ...restProps } = props
- return React.createElement('div', { ...restProps, ref }, children)
- }),
- WebView: React.forwardRef((props: any, ref: any) => {
- const { children, ...restProps } = props
- return React.createElement('iframe', { ...restProps, ref }, children)
- }),
- Ad: React.forwardRef((props: any, ref: any) => {
- const { children, ...restProps } = props
- return React.createElement('div', { ...restProps, ref }, children)
- }),
- OfficialAccount: React.forwardRef((props: any, ref: any) => {
- const { children, ...restProps } = props
- return React.createElement('div', { ...restProps, ref }, children)
- }),
- CoverView: React.forwardRef((props: any, ref: any) => {
- const { children, ...restProps } = props
- return React.createElement('div', { ...restProps, ref }, children)
- }),
- CoverImage: React.forwardRef((props: any, ref: any) => {
- const { ...restProps } = props
- return React.createElement('img', { ...restProps, ref })
- }),
- FunctionalPageNavigator: React.forwardRef((props: any, ref: any) => {
- const { children, ...restProps } = props
- return React.createElement('div', { ...restProps, ref }, children)
- }),
- AdContent: React.forwardRef((props: any, ref: any) => {
- const { children, ...restProps } = props
- return React.createElement('div', { ...restProps, ref }, children)
- }),
- MatchMedia: React.forwardRef((props: any, ref: any) => {
- const { children, ...restProps } = props
- return React.createElement('div', { ...restProps, ref }, children)
- }),
- PageContainer: React.forwardRef((props: any, ref:any) => {
- const { children, ...restProps } = props
- return React.createElement('div', { ...restProps, ref }, children)
- }),
- ShareElement: React.forwardRef((props: any, ref: any) => {
- const { children, ...restProps } = props
- return React.createElement('div', { ...restProps, ref }, children)
- }),
- KeyboardAccessory: React.forwardRef((props: any, ref: any) => {
- const { children, ...restProps } = props
- return React.createElement('div', { ...restProps, ref }, children)
- }),
- RootPortal: React.forwardRef((props: any, ref: any) => {
- const { children, ...restProps } = props
- return React.createElement('div', { ...restProps, ref }, children)
- }),
- PageMeta: React.forwardRef((props: any, ref: any) => {
- const { children, ...restProps } = props
- return React.createElement('div', { ...restProps, ref }, children)
- }),
- NavigationBar: React.forwardRef((props: any, ref: any) => {
- const { children, ...restProps } = props
- return React.createElement('div', { ...restProps, ref }, children)
- }),
- Block: React.forwardRef((props: any, ref: any) => {
- const { children, ...restProps } = props
- return React.createElement('div', { ...restProps, ref }, children)
- }),
- Import: React.forwardRef((props: any, ref: any) => {
- const { children, ...restProps } = props
- return React.createElement('div', { ...restProps, ref }, children)
- }),
- Include: React.forwardRef((props: any, ref: any) => {
- const { children, ...restProps } = props
- return React.createElement('div', { ...restProps, ref }, children)
- }),
- Template: React.forwardRef((props: any, ref: any) => {
- const { children, ...restProps } = props
- return React.createElement('div', { ...restProps, ref }, children)
- }),
- Slot: React.forwardRef((props: any, ref: any) => {
- const { children, ...restProps } = props
- return React.createElement('div', { ...restProps, ref }, children)
- }),
- NativeSlot: React.forwardRef((props: any, ref: any) => {
- const { children, ...restProps } = props
- return React.createElement('div', { ...restProps, ref }, children)
- }),
- CustomWrapper: React.forwardRef((props: any, ref: any) => {
- const { children, ...restProps } = props
- return React.createElement('div', { ...restProps, ref }, children)
- }),
- Editor: React.forwardRef((props: any, ref: any) => {
- const { children, ...restProps } = props
- return React.createElement('div', { ...restProps, ref }, children)
- }),
- VoipRoom: React.forwardRef((props: any, ref: any) => {
- const { children, ...restProps } = props
- return React.createElement('div', { ...restProps, ref }, children)
- }),
- AdCustom: React.forwardRef((props: any, ref: any) => {
- const { children, ...restProps } = props
- return React.createElement('div', { ...restProps, ref }, children)
- })
- }
- })
- // Mock 常用 UI 组件
- jest.mock('@/components/ui/dialog', () => {
- const React = require('react')
- return {
- Dialog: ({ open, children }: any) => open ? React.createElement('div', { 'data-testid': 'dialog' }, children) : null,
- DialogContent: ({ children, className }: any) => React.createElement('div', { className }, children),
- DialogHeader: ({ children, className }: any) => React.createElement('div', { className }, children),
- DialogTitle: ({ children, className }: any) => React.createElement('div', { className }, children),
- DialogFooter: ({ children, className }: any) => React.createElement('div', { className }, children)
- }
- })
- // 默认导出
- export default {}
|