fix(runtime-core): handle error in async KeepAlive hooks (#4978)

This commit is contained in:
ygj6
2021-11-22 15:50:19 +08:00
committed by GitHub
parent 61720231b4
commit 820a143457
2 changed files with 31 additions and 2 deletions

View File

@@ -16,7 +16,9 @@ import {
cloneVNode,
provide,
defineAsyncComponent,
Component
Component,
createApp,
onActivated
} from '@vue/runtime-test'
import { KeepAliveProps } from '../../src/components/KeepAlive'
@@ -874,4 +876,31 @@ describe('KeepAlive', () => {
await nextTick()
expect(serializeInner(root)).toBe('<p>1</p>')
})
// #4976
test('handle error in async onActivated', async () => {
const err = new Error('foo')
const handler = jest.fn()
const app = createApp({
setup() {
return () => h(KeepAlive, null, () => h(Child))
}
})
const Child = {
setup() {
onActivated(async () => {
throw err
})
},
render() {}
}
app.config.errorHandler = handler
app.mount(nodeOps.createElement('div'))
await nextTick()
expect(handler).toHaveBeenCalledWith(err, {}, 'activated hook')
})
})