axios-miniprogram/test/helpers/buildURL.test.ts

71 lines
1.5 KiB
TypeScript
Raw Normal View History

import { describe, test, expect } from 'vitest';
2023-04-10 22:53:15 +08:00
import { buildURL } from '@/helpers/buildURL';
describe('src/helpers/buildURL.ts', () => {
test('应该支持空参数', () => {
2023-04-10 22:53:15 +08:00
expect(buildURL()).toBe('');
2023-04-03 21:03:33 +08:00
expect(buildURL('/test')).toBe('/test');
});
test('应该对参数进行系列化', () => {
expect(
2023-04-10 15:03:59 +08:00
buildURL('/test', {
v1: 1,
v2: undefined,
v3: null,
v4: '4',
v5: NaN,
}),
2023-04-03 21:03:33 +08:00
).toBe('/test?v1=1&v4=4');
expect(
2023-04-03 21:03:33 +08:00
buildURL('/test?v1=1', {
v2: 2,
}),
2023-04-03 21:03:33 +08:00
).toBe('/test?v1=1&v2=2');
});
test('应该对数组进行系列化', () => {
2023-04-10 18:53:21 +08:00
expect(
buildURL('/test', {
arr: [],
}),
).toBe('/test');
expect(
2023-04-03 21:03:33 +08:00
buildURL('/test', {
arr: [1, 2],
}),
2023-04-03 21:03:33 +08:00
).toBe('/test?arr[]=1&arr[]=2');
});
test('应该对对象进行系列化', () => {
2023-04-10 18:53:21 +08:00
expect(
buildURL('/test', {
obj: {},
}),
).toBe('/test');
expect(
2023-04-03 21:03:33 +08:00
buildURL('/test', {
obj: {
k1: 1,
k2: 2,
},
}),
2023-04-03 21:03:33 +08:00
).toBe('/test?obj[k1]=1&obj[k2]=2');
});
test('应该对日期进行系列化', () => {
2023-04-03 21:03:33 +08:00
const d = new Date();
expect(buildURL('/test', { date: d })).toBe(
`/test?date=${d.toISOString()}`,
);
});
test('应该支持自定义序列化器', () => {
2023-04-03 21:03:33 +08:00
expect(buildURL('/test', {}, () => 'v1=1&v2=2')).toBe('/test?v1=1&v2=2');
expect(buildURL('/test?v1=1', {}, () => 'v2=2&v3=3')).toBe(
'/test?v1=1&v2=2&v3=3',
);
});
});