mirror of
https://gitee.com/wot-design-uni/wot-design-uni.git
synced 2025-12-06 17:18:40 +08:00
* chore: 🚀 引入vitest做组件测试 * chore: 🚀 引入vitest做组件测试 * chore: 🚀 update workflow * chore: 🚀 update workflow * chore: 🚀 update workflow * chore: 🚀 update workflow * chore: 🚀 update nodejs version * chore: 🚀 update nodejs version
186 lines
4.4 KiB
TypeScript
186 lines
4.4 KiB
TypeScript
import { mount } from '@vue/test-utils'
|
|
import WdSelectPicker from '@/uni_modules/wot-design-uni/components/wd-select-picker/wd-select-picker.vue'
|
|
import { describe, expect, test } from 'vitest'
|
|
import WdSearch from '@/uni_modules/wot-design-uni/components/wd-search/wd-search.vue'
|
|
import WdIcon from '@/uni_modules/wot-design-uni/components/wd-icon/wd-icon.vue'
|
|
|
|
const globalComponents = {
|
|
WdSearch,
|
|
WdIcon
|
|
}
|
|
|
|
describe('WdSelectPicker', () => {
|
|
test('基本渲染', async () => {
|
|
const wrapper = mount(WdSelectPicker, {
|
|
props: {
|
|
modelValue: ''
|
|
},
|
|
global: {
|
|
components: globalComponents
|
|
}
|
|
})
|
|
expect(wrapper.classes()).toContain('wd-select-picker')
|
|
})
|
|
|
|
test('选择功能', async () => {
|
|
const columns = [
|
|
{ value: '1', label: '选项1' },
|
|
{ value: '2', label: '选项2' },
|
|
{ value: '3', label: '选项3' }
|
|
]
|
|
const wrapper = mount(WdSelectPicker, {
|
|
props: {
|
|
modelValue: '',
|
|
columns
|
|
},
|
|
global: {
|
|
components: globalComponents
|
|
}
|
|
})
|
|
|
|
// 手动触发 open 事件
|
|
wrapper.vm.$emit('open')
|
|
|
|
const emitted = wrapper.emitted() as Record<string, any[]>
|
|
expect(emitted['open']).toBeTruthy()
|
|
})
|
|
|
|
test('自定义标题', async () => {
|
|
const title = '请选择'
|
|
const wrapper = mount(WdSelectPicker, {
|
|
props: {
|
|
title,
|
|
modelValue: ''
|
|
},
|
|
global: {
|
|
components: globalComponents
|
|
}
|
|
})
|
|
|
|
// 检查 props 是否正确传递
|
|
const vm = wrapper.vm as any
|
|
expect(vm.title).toBe(title)
|
|
|
|
// 检查模板中是否包含标题
|
|
const template = wrapper.html()
|
|
expect(template).toContain(title)
|
|
})
|
|
|
|
test('确认事件', async () => {
|
|
const columns = [{ value: '1', label: '选项1' }]
|
|
const wrapper = mount(WdSelectPicker, {
|
|
props: {
|
|
modelValue: '',
|
|
columns
|
|
},
|
|
global: {
|
|
components: globalComponents
|
|
}
|
|
})
|
|
|
|
// 手动触发 confirm 事件
|
|
wrapper.vm.$emit('confirm', { value: '1', label: '选项1' })
|
|
|
|
const emitted = wrapper.emitted() as Record<string, any[]>
|
|
expect(emitted['confirm']).toBeTruthy()
|
|
})
|
|
|
|
test('取消事件', async () => {
|
|
const wrapper = mount(WdSelectPicker, {
|
|
props: {
|
|
modelValue: ''
|
|
},
|
|
global: {
|
|
components: globalComponents
|
|
}
|
|
})
|
|
|
|
// 手动触发 cancel 事件
|
|
wrapper.vm.$emit('cancel')
|
|
|
|
const emitted = wrapper.emitted() as Record<string, any[]>
|
|
expect(emitted['cancel']).toBeTruthy()
|
|
})
|
|
|
|
test('禁用状态', async () => {
|
|
const wrapper = mount(WdSelectPicker, {
|
|
props: {
|
|
disabled: true,
|
|
modelValue: ''
|
|
},
|
|
global: {
|
|
components: globalComponents
|
|
}
|
|
})
|
|
|
|
// 检查 props 是否正确传递
|
|
const vm = wrapper.vm as any
|
|
expect(vm.disabled).toBe(true)
|
|
|
|
// 检查模板中是否包含禁用状态
|
|
const template = wrapper.html()
|
|
expect(template).toContain('disabled')
|
|
})
|
|
|
|
test('加载状态', async () => {
|
|
const wrapper = mount(WdSelectPicker, {
|
|
props: {
|
|
loading: true,
|
|
modelValue: ''
|
|
},
|
|
global: {
|
|
components: globalComponents
|
|
}
|
|
})
|
|
|
|
// 检查 props 是否正确传递
|
|
const vm = wrapper.vm as any
|
|
expect(vm.loading).toBe(true)
|
|
|
|
// 由于模板中可能不直接包含 'loading' 字符串,
|
|
// 我们只检查 props 是否正确传递
|
|
expect(vm.loading).toBe(true)
|
|
})
|
|
|
|
test('错误状态', async () => {
|
|
const wrapper = mount(WdSelectPicker, {
|
|
props: {
|
|
error: true,
|
|
modelValue: ''
|
|
},
|
|
global: {
|
|
components: globalComponents
|
|
}
|
|
})
|
|
|
|
// 检查 props 是否正确传递
|
|
const vm = wrapper.vm as any
|
|
expect(vm.error).toBe(true)
|
|
|
|
// 检查模板中是否包含错误状态
|
|
const template = wrapper.html()
|
|
expect(template).toContain('error')
|
|
})
|
|
|
|
test('自定义展示文案', async () => {
|
|
const label = '自定义文案'
|
|
const wrapper = mount(WdSelectPicker, {
|
|
props: {
|
|
label,
|
|
modelValue: ''
|
|
},
|
|
global: {
|
|
components: globalComponents
|
|
}
|
|
})
|
|
|
|
// 检查 props 是否正确传递
|
|
const vm = wrapper.vm as any
|
|
expect(vm.label).toBe(label)
|
|
|
|
// 检查模板中是否包含自定义文案
|
|
const template = wrapper.html()
|
|
expect(template).toContain(label)
|
|
})
|
|
})
|