From 01fdf76be8dcb303033d1c4cbc8de06268554514 Mon Sep 17 00:00:00 2001 From: daiwei Date: Mon, 17 Nov 2025 16:36:49 +0800 Subject: [PATCH] test(runtime-vapor): add tests for dynamic components with vapor and vdom children --- .../__tests__/vdomInterop.spec.ts | 34 ++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/packages/runtime-vapor/__tests__/vdomInterop.spec.ts b/packages/runtime-vapor/__tests__/vdomInterop.spec.ts index 50b190c9b7..e3b7bfff64 100644 --- a/packages/runtime-vapor/__tests__/vdomInterop.spec.ts +++ b/packages/runtime-vapor/__tests__/vdomInterop.spec.ts @@ -14,6 +14,7 @@ import { provide, ref, renderSlot, + resolveDynamicComponent, shallowRef, toDisplayString, useModel, @@ -323,7 +324,38 @@ describe('vdomInterop', () => { }) }) - describe.todo('dynamic component', () => {}) + describe('dynamic component', () => { + it('dynamic component with vapor child', async () => { + const VaporChild = defineVaporComponent({ + setup() { + return template('
vapor child
')() as any + }, + }) + + const VdomChild = defineComponent({ + setup() { + return () => h('div', 'vdom child') + }, + }) + + const view = shallowRef(VaporChild) + const { html } = define({ + setup() { + return () => h(resolveDynamicComponent(view.value) as any) + }, + }).render() + + expect(html()).toBe('
vapor child
') + + view.value = VdomChild + await nextTick() + expect(html()).toBe('
vdom child
') + + view.value = VaporChild + await nextTick() + expect(html()).toBe('
vapor child
') + }) + }) describe('attribute fallthrough', () => { it('should fallthrough attrs to vdom child', () => { -- 2.47.3