import Vue from 'vue'
describe('Options renderError', () => {
it('should be used on render errors', done => {
Vue.config.errorHandler = () => {}
const vm = new Vue({
data: {
ok: true
},
render(h) {
if (this.ok) {
return h('div', 'ok')
} else {
throw new Error('no')
}
},
renderError(h, err) {
return h('div', err.toString())
}
}).$mount()
expect(vm.$el.textContent).toBe('ok')
vm.ok = false
waitForUpdate(() => {
expect(vm.$el.textContent).toBe('Error: no')
Vue.config.errorHandler = undefined
}).then(done)
})
it('should pass on errors in renderError to global handler', () => {
const spy = (Vue.config.errorHandler = vi.fn())
const err = new Error('renderError')
const vm = new Vue({
render() {
throw new Error('render')
},
renderError() {
throw err
}
}).$mount()
expect(spy).toHaveBeenCalledWith(err, vm, 'renderError')
})
})