Files
Genarrative/src/services/image-editor/editorRetryOptions.test.ts
T
kdletters 9ad2152816 为图片编辑器上传和生成加自动重试
新增图片编辑器请求重试配置

生成请求遇到429等临时错误自动重试

上传凭证、资产确认和直传上传共用重试策略

补充图片编辑器重试参数和直传429测试
2026-06-23 16:30:54 +08:00

45 lines
1.2 KiB
TypeScript

import { afterEach, describe, expect, it, vi } from 'vitest';
import { postEditorDirectUploadFile } from './editorRetryOptions';
describe('editorRetryOptions', () => {
afterEach(() => {
vi.restoreAllMocks();
vi.unstubAllGlobals();
vi.useRealTimers();
});
it('retries direct editor uploads when the storage endpoint returns 429', async () => {
vi.useFakeTimers();
const fetchMock = vi
.fn()
.mockResolvedValueOnce(new Response(null, { status: 429 }))
.mockResolvedValueOnce(new Response(null, { status: 200 }));
vi.stubGlobal('fetch', fetchMock);
const uploadPromise = postEditorDirectUploadFile(
{
host: 'https://oss.example.com',
formFields: { key: 'editor/demo.mp4', policy: 'policy' },
},
new File(['video'], 'demo.mp4', { type: 'video/mp4' }),
'上传素材失败',
);
await Promise.resolve();
expect(fetchMock).toHaveBeenCalledTimes(1);
await vi.advanceTimersByTimeAsync(800);
await uploadPromise;
expect(fetchMock).toHaveBeenCalledTimes(2);
expect(fetchMock).toHaveBeenLastCalledWith(
'https://oss.example.com',
expect.objectContaining({
method: 'POST',
body: expect.any(FormData),
}),
);
});
});