Repository navigation
fix: apply global mocks named after internal instance fields - #2977
Open
ValentinYoushkevich wants to merge 1 commit into
Open
ValentinYoushkevich wants to merge 1 commit into
ValentinYoushkevich wants to merge 1 commit into
Conversation
The public instance proxy refuses to set `$x` when `x` is an internal field of the component instance, so mocks like `$u` (uView) made the mocks mixin throw. Define these mocks directly on the instance context.
✅ Deploy Preview for vue-test-utils-docs ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
global.mockswith a name like$u(uView),$m,$cor$ais never applied: the mocks mixin doesthis[k] = v, and Vue's instance proxy refuses to set$xwhenxis an internal instance field (uholds theupdatedhooks). The mixin throws, somount,shallowMountandrenderToStringall fail, also for<script setup>components (the mixin runs on the VTU root as well).The mixin now defines these mocks directly on the instance context, which the proxy reads them from.
Object.definePropertyis used so that the mock also overrides a real$uinstalled by the plugin inglobalProperties(this is what Vue itself does for global properties). Other mocks still go through the proxy as before.uview-plus installs
$uas a global property and uses it from components, e.g. index.js and login/index.vue.Repro on 2.5.1: playground