Skip to content

Commit

Permalink
chore(mount): simplify mount operation
Browse files Browse the repository at this point in the history
* do not use ugly console.warn hack
  • Loading branch information
xanf committed Nov 3, 2022
1 parent b881c10 commit 9d594e3
Showing 1 changed file with 9 additions and 7 deletions.
16 changes: 9 additions & 7 deletions src/mount.ts
Expand Up @@ -25,7 +25,8 @@ import {
ComponentOptions,
ConcreteComponent,
Prop,
transformVNodeArgs
transformVNodeArgs,
ref
} from 'vue'

import { MountingOptions, Slot } from './types'
Expand Down Expand Up @@ -432,9 +433,15 @@ export function mount(
component.components = { ...component.components, ...global.components }
}

const componentRef = ref(null)
// create the wrapper component
const Parent = defineComponent({
name: 'VTU_ROOT',
setup() {
return {
[MOUNT_COMPONENT_REF]: componentRef
}
},
render() {
return h(component as ComponentOptions, { ...props, ...refs }, slots)
}
Expand Down Expand Up @@ -561,17 +568,12 @@ export function mount(
// mount the app!
const vm = app.mount(el)

// Ignore "Avoid app logic that relies on enumerating keys on a component instance..." warning
const warnSave = console.warn
console.warn = () => {}

const appRef = vm.$refs[MOUNT_COMPONENT_REF] as ComponentPublicInstance
const appRef = componentRef.value! as ComponentPublicInstance
// we add `hasOwnProperty` so Jest can spy on the proxied vm without throwing
// note that this is not necessary with Jest v27+ or Vitest, but is kept for compatibility with older Jest versions
appRef.hasOwnProperty = (property) => {
return Reflect.has(appRef, property)
}
console.warn = warnSave
const wrapper = createVueWrapper(app, appRef, setProps)
trackInstance(wrapper)
return wrapper
Expand Down

0 comments on commit 9d594e3

Please sign in to comment.