|
|
@@ -197,4 +197,25 @@ describe('Watcher', () => {
|
|
|
new Watcher(vm, 'd.e + c', spy)
|
|
|
expect('Failed watching path:').toHaveBeenWarned()
|
|
|
})
|
|
|
+
|
|
|
+ it('catch getter error', () => {
|
|
|
+ Vue.config.watcherErrorHandler = spy
|
|
|
+ const err = new Error()
|
|
|
+ const vm = new Vue({
|
|
|
+ render () { throw err }
|
|
|
+ }).$mount()
|
|
|
+ expect('Error during component render').toHaveBeenWarned()
|
|
|
+ expect(spy).toHaveBeenCalledWith(err, vm)
|
|
|
+ })
|
|
|
+
|
|
|
+ it('catch user watcher error', () => {
|
|
|
+ Vue.config.watcherErrorHandler = spy
|
|
|
+ new Watcher(vm, function () {
|
|
|
+ return this.a.b.c
|
|
|
+ }, () => {}, { user: true })
|
|
|
+ expect('Error when evaluating watcher').toHaveBeenWarned()
|
|
|
+ expect(spy).toHaveBeenCalled()
|
|
|
+ expect(spy.calls.argsFor(0)[0] instanceof TypeError).toBe(true)
|
|
|
+ expect(spy.calls.argsFor(0)[1]).toBe(vm)
|
|
|
+ })
|
|
|
})
|