test(reactivity): add test case for effectScope (#4239)

This commit is contained in:
webfansplz 2021-08-11 01:59:58 +08:00 committed by GitHub
parent c46af8fe26
commit e04680b0aa
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 20 additions and 1 deletions

View File

@ -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())!

View File

@ -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.`
)
}