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; get: ReturnType; }; 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); }); });