renderError.spec.ts 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import Vue from 'vue'
  2. describe('Options renderError', () => {
  3. it('should be used on render errors', done => {
  4. Vue.config.errorHandler = () => {}
  5. const vm = new Vue({
  6. data: {
  7. ok: true
  8. },
  9. render(h) {
  10. if (this.ok) {
  11. return h('div', 'ok')
  12. } else {
  13. throw new Error('no')
  14. }
  15. },
  16. renderError(h, err) {
  17. return h('div', err.toString())
  18. }
  19. }).$mount()
  20. expect(vm.$el.textContent).toBe('ok')
  21. vm.ok = false
  22. waitForUpdate(() => {
  23. expect(vm.$el.textContent).toBe('Error: no')
  24. Vue.config.errorHandler = undefined
  25. }).then(done)
  26. })
  27. it('should pass on errors in renderError to global handler', () => {
  28. const spy = (Vue.config.errorHandler = vi.fn())
  29. const err = new Error('renderError')
  30. const vm = new Vue({
  31. render() {
  32. throw new Error('render')
  33. },
  34. renderError() {
  35. throw err
  36. }
  37. }).$mount()
  38. expect(spy).toHaveBeenCalledWith(err, vm, 'renderError')
  39. })
  40. })