axios-miniprogram/test/adapter.test.ts

71 lines
1.8 KiB
TypeScript

import { describe, test, expect, vi } from 'vitest';
import { createAdapter } from 'src/adapter';
import { noop } from 'scripts/test.utils';
describe('src/adapter.ts', () => {
test('应该抛出异常', () => {
expect(() =>
createAdapter(undefined as any),
).toThrowErrorMatchingInlineSnapshot(
'"[axios-miniprogram]: platform 不是一个 object"',
);
expect(() => createAdapter({} as any)).toThrowErrorMatchingInlineSnapshot(
'"[axios-miniprogram]: request 不是一个 function"',
);
expect(() =>
createAdapter({ request: vi.fn() } as any),
).toThrowErrorMatchingInlineSnapshot(
'"[axios-miniprogram]: upload 不是一个 function"',
);
expect(() =>
createAdapter({ request: vi.fn(), upload: vi.fn() } as any),
).toThrowErrorMatchingInlineSnapshot(
'"[axios-miniprogram]: download 不是一个 function"',
);
});
test('应该可以成功执行对应的平台函数', () => {
const p = {
request: vi.fn(),
upload: vi.fn(),
download: vi.fn(),
};
const a = createAdapter(p);
const r = {
type: 'request' as const,
url: 'test',
method: 'GET' as const,
success: noop,
fail: noop,
};
const u = {
type: 'upload' as const,
url: 'test',
method: 'POST' as const,
data: {},
success: noop,
fail: noop,
};
const d = {
type: 'download' as const,
url: 'test',
method: 'GET' as const,
params: { fileName: '', filePath: '' },
success: noop,
fail: noop,
};
expect(p.request).not.toBeCalled();
a(r);
expect(p.request).toBeCalled();
expect(p.upload).not.toBeCalled();
a(u);
expect(p.upload).toBeCalled();
expect(p.download).not.toBeCalled();
a(d);
expect(p.download).toBeCalled();
});
});