usrApi.test.ts
1.45 KB
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
39
40
41
42
43
44
45
46
47
48
import { describe, it, expect, vi, beforeEach } from 'vitest';
// 桩掉底层 axios 实例(request.ts 的 default 导出)
vi.mock('../../src/api/request', () => {
return {
default: {
post: vi.fn(),
get: vi.fn(),
},
};
});
import request from '../../src/api/request';
import { login, fetchCompanies } from '../../src/api/usrApi';
const mockedRequest = request as unknown as {
post: ReturnType<typeof vi.fn>;
get: ReturnType<typeof vi.fn>;
};
describe('usrApi', () => {
beforeEach(() => {
vi.clearAllMocks();
});
it('login posts to /usr/login with sUserName/password/companyId', async () => {
const result = {
token: 'tk',
user: { id: 1, sUserName: 'admin', sUserType: '超级管理员', sLanguage: '中文' },
};
mockedRequest.post.mockResolvedValue(result);
const payload = { sUserName: 'admin', password: 'p', companyId: 9 };
const ret = await login(payload);
expect(mockedRequest.post).toHaveBeenCalledWith('/usr/login', payload);
expect(ret).toEqual(result);
});
it('fetchCompanies gets /usr/companies and returns list', async () => {
const list = [
{ id: 1, sCompanyName: '甲公司', sVersion: '标准版' },
{ id: 2, sCompanyName: '乙公司', sVersion: null },
];
mockedRequest.get.mockResolvedValue(list);
const ret = await fetchCompanies();
expect(mockedRequest.get).toHaveBeenCalledWith('/usr/companies');
expect(ret).toEqual(list);
});
});