diff --git a/docs/superpowers/plans/2026-10-10-material-bulk-import.md b/docs/superpowers/plans/2026-10-10-material-bulk-import.md
index e0b56bcf..97ef8fbf 100644
--- a/docs/superpowers/plans/2026-10-10-material-bulk-import.md
+++ b/docs/superpowers/plans/2026-10-10-material-bulk-import.md
@@ -2143,6 +2143,7 @@ git commit -m "feat: 物料导入前端接口与 CSV 导出工具"
```js
import { mount } from '@vue/test-utils'
import ElementPlus from 'element-plus'
+import { nextTick } from 'vue'
import { describe, expect, test, vi } from 'vitest'
import MaterialImportResult from './MaterialImportResult.vue'
@@ -2156,16 +2157,21 @@ const failedResult = {
]
}
-function mountResult(result) {
- return mount(MaterialImportResult, {
+// el-table 分两轮渲染:先注册列,下一轮才把单元格填上。只等一个 tick 的话
+// 拿到的是空
,断言文本会莫名其妙地失败(实测过一次),所以统一等两轮。
+async function mountResult(result, options = {}) {
+ const wrapper = mount(MaterialImportResult, {
props: { result },
- global: { plugins: [ElementPlus], stubs: { teleport: true } }
+ global: { plugins: [ElementPlus], stubs: { teleport: true }, ...options }
})
+ await nextTick()
+ await nextTick()
+ return wrapper
}
describe('MaterialImportResult', () => {
- test('失败时展示行数摘要与每行错误', () => {
- const wrapper = mountResult(failedResult)
+ test('失败时展示行数摘要与每行错误', async () => {
+ const wrapper = await mountResult(failedResult)
expect(wrapper.text()).toContain('共 3 行')
expect(wrapper.text()).toContain('2 行未通过')
@@ -2178,14 +2184,7 @@ describe('MaterialImportResult', () => {
test('导出错误明细时把行号与原因写进 CSV', async () => {
const download = vi.fn()
- const wrapper = mount(MaterialImportResult, {
- props: { result: failedResult },
- global: {
- plugins: [ElementPlus],
- stubs: { teleport: true },
- provide: { downloadCsv: download }
- }
- })
+ const wrapper = await mountResult(failedResult, { provide: { downloadCsv: download } })
await wrapper.find('[data-test="export-errors"]').trigger('click')
@@ -2197,8 +2196,8 @@ describe('MaterialImportResult', () => {
wrapper.unmount()
})
- test('全部成功时只展示成功摘要,不显示错误表格', () => {
- const wrapper = mountResult({ total_rows: 2, success_rows: 2, failed_rows: 0, errors: [] })
+ test('全部成功时只展示成功摘要,不显示错误表格', async () => {
+ const wrapper = await mountResult({ total_rows: 2, success_rows: 2, failed_rows: 0, errors: [] })
expect(wrapper.text()).toContain('成功导入 2 条')
expect(wrapper.find('[data-test="error-table"]').exists()).toBe(false)