Bug: Props in child component defined in mixin are missing with `shallowMount` on @vue/compat
Describe the bug
With shallowMount on Vue 3 + @vue/compat, properties of a child component are undefined when using them through a mixin.
If the property is moved from the mixin directly to the component, then the property is defined.
Also if the shallowMount is switched to mount, the property is defined.
To Reproduce
I created a demo repo where this issue can be reproduced, with tags for various working and not working states. It includes the following important files:
- Parent Component: App.vue
- Child Component: HelloWorld.vue
- Mixin: HelloWorldMixin.js
- Test: App.test.js
git clone https://github.com/cody-collins/vue-compat-mixin-demo.git
cd vue-compat-mixin-demo
npm install
npm test
And the following tags:
- Working: Vue 2 + VTU 1
- Broken: Vue 3 + VTU 2
-
Working: Vue 3 + VTU 2 +
mountinstead ofshallowMount - Working: Vue 3 + VTU 2 + props moved to component
Expected behavior The second assertion should pass in the broken case
Hi @cody-collins
Thanks for the repros. compat mode is the realm of @xanf , so let's ping him
I do not doubt this is a bug, but I suspect fixing this will be quite complex. It may be a good time to attempt to move your test to use mount, which is a lot less complexity and more in parity with both Test Utils v1 and production in general.