diff --git a/packages/test-utils/src/recursively-set-data.js b/packages/test-utils/src/recursively-set-data.js index ea03cb62b..99cf741e2 100644 --- a/packages/test-utils/src/recursively-set-data.js +++ b/packages/test-utils/src/recursively-set-data.js @@ -5,7 +5,11 @@ export function recursivelySetData(vm, target, data) { const val = data[key] const targetVal = target[key] - if (isPlainObject(val) && isPlainObject(targetVal)) { + if ( + isPlainObject(val) && + isPlainObject(targetVal) && + Object.keys(val).length > 0 + ) { recursivelySetData(vm, targetVal, val) } else { vm.$set(target, key, val) diff --git a/test/specs/wrapper/setData.spec.js b/test/specs/wrapper/setData.spec.js index dfedba3ea..a7ac5681a 100644 --- a/test/specs/wrapper/setData.spec.js +++ b/test/specs/wrapper/setData.spec.js @@ -320,4 +320,29 @@ describeWithShallowAndMount('setData', mountingMethod => { await wrapper.setData({ selectedDate: testDate }) expect(wrapper.vm.selectedDate).toEqual(testDate) }) + + it('allows empty objects to be set', () => { + const TestComponent = { + data() { + return { + someKey: { someValue: true } + } + }, + render(h) { + return h('span') + } + } + + const wrapper = mountingMethod(TestComponent) + + expect(wrapper.vm.$data).toEqual({ someKey: { someValue: true } }) + + wrapper.setData({ someKey: {} }) + + expect(wrapper.vm.$data).toEqual({ someKey: {} }) + + wrapper.setData({ someKey: { someValue: false } }) + + expect(wrapper.vm.$data).toEqual({ someKey: { someValue: false } }) + }) })