问题描述
当测试用例包含异步逻辑时,直接在异步逻辑函数里使用expect会导致测试失败
解决方案
不能直接在异步函数里直接使用expect函数,因为watch函数是同步的,it不会等待异步函数中的异步逻辑,需要在it中等待watch的异步逻辑调用完成
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| it('watch invalidate callback should be work', async () => { const data = reactive({ a: 1, b: 2, }); let globalValue = 0; watch( () => data.a, async (_newValue, _, onInvalidate) => { let isInvalidate = false; let res: number; onInvalidate(() => { isInvalidate = true; }); if (data.a === 2) { res = await new Promise(re => { setTimeout(() => { re(999); }, 50); }); } else { res = await new Promise(re => { setTimeout(() => { re(3); }, 100); }); }
if (!isInvalidate) { globalValue = res; } }, ); data.a++; data.a++; await new Promise(resolve => setTimeout(resolve, 500)); expect(globalValue).toBe(3); });
|
读者来信
✎ 投递您的来信