From 69d717028eac3bdda485488586fb0d404262f2f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=A5=E6=99=93=E5=90=8C=E4=B8=B6?= Date: Fri, 15 Aug 2025 14:26:30 +0800 Subject: [PATCH] test(components): [avatar, image] improve image load test stability (#21762) * test(components): [avatar] improve fallback slot test stability * test: improve image test --- .../avatar/__tests__/avatar.test.tsx | 9 ++++++-- .../components/image/__tests__/image.test.tsx | 21 ++++++++++++------- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/packages/components/avatar/__tests__/avatar.test.tsx b/packages/components/avatar/__tests__/avatar.test.tsx index 2b109ad8aa..a264e2a65c 100644 --- a/packages/components/avatar/__tests__/avatar.test.tsx +++ b/packages/components/avatar/__tests__/avatar.test.tsx @@ -1,5 +1,5 @@ import { markRaw, nextTick } from 'vue' -import { mount } from '@vue/test-utils' +import { flushPromises, mount } from '@vue/test-utils' import { describe, expect, test } from 'vitest' import { User } from '@element-plus/icons-vue' import { @@ -54,7 +54,12 @@ describe('Avatar.vue', () => { ) await nextTick() - wrapper.emitted('error') && expect(wrapper.emitted('error')).toBeDefined() + const img = wrapper.find('img') + if (img.exists()) { + await img.trigger('error') + } + await flushPromises() + expect(wrapper.emitted('error')).toBeDefined() await nextTick() expect(wrapper.text()).toBe('fallback') expect(wrapper.find('img').exists()).toBe(false) diff --git a/packages/components/image/__tests__/image.test.tsx b/packages/components/image/__tests__/image.test.tsx index 99e238b27f..adfe65b959 100644 --- a/packages/components/image/__tests__/image.test.tsx +++ b/packages/components/image/__tests__/image.test.tsx @@ -1,5 +1,5 @@ import { nextTick } from 'vue' -import { mount } from '@vue/test-utils' +import { flushPromises, mount } from '@vue/test-utils' import { describe, expect, test, vi } from 'vitest' import { IMAGE_FAIL, @@ -271,12 +271,19 @@ describe('Image.vue', () => { src: IMAGE_FAIL, }, }) - wrapper.setProps({ - src: IMAGE_SUCCESS, - }) - expect(wrapper.find('.el-image__placeholder').exists()).toBe(true) - await doubleWait() - expect(wrapper.emitted('error')).toBeUndefined() + await flushPromises() + const errorCountBefore = wrapper.emitted('error')?.length || 0 + + await wrapper.setProps({ src: IMAGE_SUCCESS }) + await nextTick() + const img = wrapper.find('img') + if (img.exists()) { + await img.trigger('load') + } + await flushPromises() + // expect no new error event to be emitted + expect(wrapper.emitted('error')?.length).toBe(errorCountBefore) + expect(wrapper.find('.el-image__inner').exists()).toBe(true) expect(wrapper.find('img').exists()).toBe(true) expect(wrapper.find('.el-image__placeholder').exists()).toBe(false)