diff --git a/packages/avatar/__tests__/avatar.spec.ts b/packages/avatar/__tests__/avatar.spec.ts index 96843c595c..814d096cfd 100644 --- a/packages/avatar/__tests__/avatar.spec.ts +++ b/packages/avatar/__tests__/avatar.spec.ts @@ -4,7 +4,7 @@ import Avatar from '../src/index.vue' import { IMAGE_SUCCESS, IMAGE_FAIL, mockImageEvent } from '@element-plus/test-utils' describe('Avatar.vue', () => { - beforeAll(mockImageEvent) + mockImageEvent() test('render test', () => { const wrapper = mount(Avatar) diff --git a/packages/image/__tests__/image.spec.ts b/packages/image/__tests__/image.spec.ts index 5c4be24e7e..d035ab51bd 100644 --- a/packages/image/__tests__/image.spec.ts +++ b/packages/image/__tests__/image.spec.ts @@ -12,7 +12,7 @@ async function doubleWait() { } describe('Image.vue', () => { - beforeAll(mockImageEvent) + mockImageEvent() test('render test', () => { const wrapper = mount(Image) diff --git a/packages/test-utils/mock.ts b/packages/test-utils/mock.ts index 0be600c25d..167932a096 100644 --- a/packages/test-utils/mock.ts +++ b/packages/test-utils/mock.ts @@ -5,12 +5,19 @@ export const IMAGE_SUCCESS = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAA export const IMAGE_FAIL = 'data:image/png;base64,fail' export function mockImageEvent() { - Object.defineProperty(global.Image.prototype, 'src', { - set(src) { - const evt = !src || src === IMAGE_FAIL - ? 'error' : 'load' - const event = new Event(evt) - nextTick(() => this.dispatchEvent(event)) - }, + const imageProto = global.Image.prototype + const oldDescriptor = Object.getOwnPropertyDescriptor(imageProto, 'src') + beforeAll(() => { + Object.defineProperty(imageProto, 'src', { + set(src) { + const evt = !src || src === IMAGE_FAIL + ? 'error' : 'load' + const event = new Event(evt) + nextTick(() => this.dispatchEvent(event)) + }, + }) + }) + afterAll(() => { + Object.defineProperty(imageProto, 'src', oldDescriptor) }) }