backtop.test.tsx 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import { nextTick } from 'vue'
  2. import { mount } from '@vue/test-utils'
  3. import { describe, expect, test } from 'vitest'
  4. import { CaretTop } from '@element-plus/icons-vue'
  5. import Backtop from '../src/backtop.vue'
  6. import type { VNode } from 'vue'
  7. const _mount = (render: () => VNode) =>
  8. mount(render, { attachTo: document.body })
  9. describe('Backtop.vue', () => {
  10. test('render', async () => {
  11. const wrapper = _mount(() => (
  12. <div class="target" style="height: 100px; overflow: auto">
  13. <div style="height: 10000px; width: 100%">
  14. <Backtop
  15. target=".target"
  16. visibilityHeight={2000}
  17. right={100}
  18. bottom={200}
  19. />
  20. </div>
  21. </div>
  22. ))
  23. await nextTick()
  24. expect(wrapper.find('.el-backtop').exists()).toBe(false)
  25. wrapper.element.scrollTop = 2000
  26. await wrapper.trigger('scroll')
  27. expect(wrapper.find('.el-backtop').exists()).toBe(true)
  28. expect(wrapper.find('.el-backtop').attributes('style')).toBe(
  29. 'right: 100px; bottom: 200px;'
  30. )
  31. expect(wrapper.findComponent(CaretTop).exists()).toBe(true)
  32. await wrapper.trigger('click')
  33. expect(wrapper.emitted()).toBeDefined()
  34. })
  35. })