UNPKG

element3

Version:

A Component Library for Vue3

80 lines (76 loc) 2.17 kB
import { mount } from '@vue/test-utils' import { h, nextTick } from '@vue/runtime-core' import Tabs from '../Tabs' import TabPane from '../../tab-pane/TabPane' describe('Tabs', () => { it('Tabs and TabPane simple to use', async () => { const wrapper = mount(Tabs, { slots: { default: { render() { return [ h(TabPane, { label: '标签1' }, () => '内容1'), h(TabPane, { label: '标签2' }, () => '内容2') ] } } } }) await nextTick() expect(wrapper.vm.tabList.length).toBe(2) const tab = wrapper.findAll('[role=tab]') await tab[1].trigger('click') await nextTick() expect(tab[1].classes()).toContain('is-active') expect(wrapper.vm.state.activeIndex === 1).toBeTruthy() }) it('Tabs and TabPane use vModel', async () => { const wrapper = mount(Tabs, { props: { modelValue: 'b1', 'onUpdate:modelValue': (name) => { expect(name).toBe('b2') } }, slots: { default: { render() { return [ h(TabPane, { label: '标签1', name: 'b1' }, () => '内容1'), h(TabPane, { label: '标签2', name: 'b2' }, () => '内容2') ] } } } }) await nextTick() const tab = wrapper.findAll('[role=tab]') await tab[1].trigger('click') await nextTick() expect(tab[1].classes()).toContain('is-active') }) it('Tabs and TabPane listen edit event', async () => { const wrapper = mount(Tabs, { props: { editable: true, onEdit(targetName, action) { expect(targetName).toBe('b2') expect(action).toBe('remove') } }, slots: { default: { render() { return [ h(TabPane, { label: '标签1', name: 'b1' }, () => '内容1'), h(TabPane, { label: '标签2', name: 'b2' }, () => '内容2') ] } } } }) await nextTick() const tab = wrapper.findAll('[role=tab]') await tab[1].find('.el-icon-close').trigger('click') }) })