diff --git a/packages/runtime-core/__tests__/componentPublicInstance.spec.ts b/packages/runtime-core/__tests__/componentPublicInstance.spec.ts index 47dcb03c3ab..d3a4cef93f7 100644 --- a/packages/runtime-core/__tests__/componentPublicInstance.spec.ts +++ b/packages/runtime-core/__tests__/componentPublicInstance.spec.ts @@ -4,7 +4,8 @@ import { getCurrentInstance, nodeOps, createApp, - shallowReadonly + shallowReadonly, + defineComponent } from '@vue/runtime-test' import { ComponentInternalInstance, ComponentOptions } from '../src/component' @@ -458,4 +459,24 @@ describe('component: proxy', () => { )} was accessed during render ` + `but is not defined on instance.` ).toHaveBeenWarned() }) + + test('should prevent mutating script setup bindings', () => { + const Comp = defineComponent({ + render() {}, + setup() { + return { + __isScriptSetup: true, + foo: 1 + } + }, + mounted() { + expect('foo' in this).toBe(false) + try { + this.foo = 123 + } catch (e) {} + } + }) + render(h(Comp), nodeOps.createElement('div')) + expect(`Cannot mutate