From e04680b0aad233edd541500f906cad6ec7d3c5df Mon Sep 17 00:00:00 2001 From: webfansplz <308241863@qq.com> Date: Wed, 11 Aug 2021 01:59:58 +0800 Subject: [PATCH] test(reactivity): add test case for effectScope (#4239) --- .../reactivity/__tests__/effectScope.spec.ts | 19 +++++++++++++++++++ packages/reactivity/src/effectScope.ts | 2 +- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/packages/reactivity/__tests__/effectScope.spec.ts b/packages/reactivity/__tests__/effectScope.spec.ts index a9e4ab0c79..6028882772 100644 --- a/packages/reactivity/__tests__/effectScope.spec.ts +++ b/packages/reactivity/__tests__/effectScope.spec.ts @@ -192,6 +192,25 @@ describe('reactivity/effect/scope', () => { expect(dummy).toBe(7) }) + it('should warn onDispose() is called when there is no active effect scope', () => { + const spy = jest.fn() + const scope = new EffectScope() + scope.run(() => { + onScopeDispose(spy) + }) + + expect(spy).toHaveBeenCalledTimes(0) + + onScopeDispose(spy) + + expect( + '[Vue warn] onDispose() is called when there is no active effect scope to be associated with.' + ).toHaveBeenWarned() + + scope.stop() + expect(spy).toHaveBeenCalledTimes(1) + }) + it('should derefence child scope from parent scope after stopping child scope (no memleaks)', async () => { const parent = new EffectScope() const child = parent.run(() => new EffectScope())! diff --git a/packages/reactivity/src/effectScope.ts b/packages/reactivity/src/effectScope.ts index db1ebdea51..05a700be43 100644 --- a/packages/reactivity/src/effectScope.ts +++ b/packages/reactivity/src/effectScope.ts @@ -98,7 +98,7 @@ export function onScopeDispose(fn: () => void) { activeEffectScope.cleanups.push(fn) } else if (__DEV__) { warn( - `onDispose() is called when there is no active effect scope ` + + `onDispose() is called when there is no active effect scope` + ` to be associated with.` ) } -- 2.47.2