diff --git a/src/vnodeTransformers/util.ts b/src/vnodeTransformers/util.ts index 3a3987b5a8..16034165a7 100644 --- a/src/vnodeTransformers/util.ts +++ b/src/vnodeTransformers/util.ts @@ -31,15 +31,15 @@ export const createVNodeTransformer = ({ > = new WeakMap() return (args: VNodeTransformerArgsType, instance: InstanceArgsType) => { - const [originalType, ...restVNodeArgs] = args + const [originalType, props, children, ...restVNodeArgs] = args if (!isComponent(originalType)) { - return [originalType, ...restVNodeArgs] + return [originalType, props, children, ...restVNodeArgs] } const cachedTransformation = transformationCache.get(originalType) if (cachedTransformation) { - return [cachedTransformation, ...restVNodeArgs] + return [cachedTransformation, props, children, ...restVNodeArgs] } const componentType: VNodeTransformerInputComponentType = originalType @@ -53,8 +53,12 @@ export const createVNodeTransformer = ({ transformationCache.set(originalType, transformedType) registerStub({ source: originalType, stub: transformedType }) + // https://github.com/vuejs/test-utils/issues/1829 + // Teleport should return child nodes as a function + if (transformedType.name === 'teleport') { + return [transformedType, props, () => children, ...restVNodeArgs] + } } - - return [transformedType, ...restVNodeArgs] + return [transformedType, props, children, ...restVNodeArgs] } }