component.spec.ts 1020 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import {
  2. template,
  3. children,
  4. effect,
  5. setText,
  6. render,
  7. ref,
  8. unmountComponent,
  9. } from '../src'
  10. import { afterEach, beforeEach, describe, expect } from 'vitest'
  11. import { defineComponent } from '@vue/runtime-core'
  12. let host: HTMLElement
  13. const initHost = () => {
  14. host = document.createElement('div')
  15. host.setAttribute('id', 'host')
  16. document.body.appendChild(host)
  17. }
  18. beforeEach(() => {
  19. initHost()
  20. })
  21. afterEach(() => {
  22. host.remove()
  23. })
  24. describe('component', () => {
  25. test('unmountComponent', async () => {
  26. const Comp = defineComponent({
  27. setup() {
  28. const count = ref(0)
  29. const t0 = template('<div></div>')
  30. const n0 = t0()
  31. const {
  32. 0: [n1],
  33. } = children(n0)
  34. effect(() => {
  35. setText(n1, void 0, count.value)
  36. })
  37. return n0
  38. },
  39. })
  40. const instance = render(Comp as any, {}, '#host')
  41. expect(host.innerHTML).toBe('<div>0</div>')
  42. unmountComponent(instance)
  43. expect(host.innerHTML).toBe('')
  44. })
  45. })