webStream.spec.ts 748 B

1234567891011121314151617181920212223242526272829303132
  1. /**
  2. * @jest-environment node
  3. */
  4. import { createApp, h, defineAsyncComponent } from 'vue'
  5. import { ReadableStream } from 'stream/web'
  6. import { renderToWebStream } from '../src'
  7. test('should work', async () => {
  8. const Async = defineAsyncComponent(() =>
  9. Promise.resolve({
  10. render: () => h('div', 'async')
  11. })
  12. )
  13. const App = {
  14. render: () => [h('div', 'parent'), h(Async)]
  15. }
  16. const stream = renderToWebStream(createApp(App), {}, ReadableStream)
  17. const reader = stream.getReader()
  18. let res = ''
  19. await reader.read().then(function read({ done, value }): any {
  20. if (!done) {
  21. res += value
  22. return reader.read().then(read)
  23. }
  24. })
  25. expect(res).toBe(`<!--[--><div>parent</div><div>async</div><!--]-->`)
  26. })