|
@@ -14,7 +14,6 @@ vi.mock('../../../data-source', () => {
|
|
|
// Mock 用户服务
|
|
// Mock 用户服务
|
|
|
vi.mock('../../modules/users/user.service', () => ({
|
|
vi.mock('../../modules/users/user.service', () => ({
|
|
|
UserService: vi.fn().mockImplementation(() => ({
|
|
UserService: vi.fn().mockImplementation(() => ({
|
|
|
- getUsersWithPagination: vi.fn().mockResolvedValue([[], 0]),
|
|
|
|
|
getUserById: vi.fn().mockResolvedValue(null),
|
|
getUserById: vi.fn().mockResolvedValue(null),
|
|
|
createUser: vi.fn().mockResolvedValue({ id: 1, username: 'testuser' }),
|
|
createUser: vi.fn().mockResolvedValue({ id: 1, username: 'testuser' }),
|
|
|
updateUser: vi.fn().mockResolvedValue({ affected: 1 }),
|
|
updateUser: vi.fn().mockResolvedValue({ affected: 1 }),
|
|
@@ -28,7 +27,7 @@ vi.mock('../../middleware/auth.middleware', () => ({
|
|
|
}));
|
|
}));
|
|
|
|
|
|
|
|
// Mock 通用CRUD服务
|
|
// Mock 通用CRUD服务
|
|
|
-vi.mock('../../utils/generic-crud.service', () => ({
|
|
|
|
|
|
|
+vi.mock('../../../utils/generic-crud.service', () => ({
|
|
|
GenericCrudService: vi.fn().mockImplementation(() => ({
|
|
GenericCrudService: vi.fn().mockImplementation(() => ({
|
|
|
getList: vi.fn().mockResolvedValue([[], 0]),
|
|
getList: vi.fn().mockResolvedValue([[], 0]),
|
|
|
getById: vi.fn().mockResolvedValue(null),
|
|
getById: vi.fn().mockResolvedValue(null),
|
|
@@ -65,7 +64,7 @@ describe('Users API Integration Tests', () => {
|
|
|
describe('GET /users', () => {
|
|
describe('GET /users', () => {
|
|
|
it('应该返回用户列表和分页信息', async () => {
|
|
it('应该返回用户列表和分页信息', async () => {
|
|
|
// 模拟通用CRUD服务返回数据
|
|
// 模拟通用CRUD服务返回数据
|
|
|
- const mockCrudService = require('../../utils/generic-crud.service').GenericCrudService();
|
|
|
|
|
|
|
+ const mockCrudService = require('../../../utils/generic-crud.service').GenericCrudService();
|
|
|
const mockUsers = [
|
|
const mockUsers = [
|
|
|
{ id: 1, username: 'user1', email: 'user1@example.com' },
|
|
{ id: 1, username: 'user1', email: 'user1@example.com' },
|
|
|
{ id: 2, username: 'user2', email: 'user2@example.com' }
|
|
{ id: 2, username: 'user2', email: 'user2@example.com' }
|
|
@@ -96,7 +95,7 @@ describe('Users API Integration Tests', () => {
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
it('应该支持关键词搜索', async () => {
|
|
it('应该支持关键词搜索', async () => {
|
|
|
- const mockCrudService = require('../../utils/generic-crud.service').GenericCrudService();
|
|
|
|
|
|
|
+ const mockCrudService = require('../../../utils/generic-crud.service').GenericCrudService();
|
|
|
mockCrudService.getList.mockResolvedValue([[], 0]);
|
|
mockCrudService.getList.mockResolvedValue([[], 0]);
|
|
|
|
|
|
|
|
const response = await apiClient.get('/users?page=1&pageSize=10&keyword=admin');
|
|
const response = await apiClient.get('/users?page=1&pageSize=10&keyword=admin');
|
|
@@ -115,7 +114,7 @@ describe('Users API Integration Tests', () => {
|
|
|
describe('GET /users/:id', () => {
|
|
describe('GET /users/:id', () => {
|
|
|
it('应该返回特定用户信息', async () => {
|
|
it('应该返回特定用户信息', async () => {
|
|
|
const mockUser = { id: 1, username: 'testuser', email: 'test@example.com' };
|
|
const mockUser = { id: 1, username: 'testuser', email: 'test@example.com' };
|
|
|
- const mockCrudService = require('../../utils/generic-crud.service').GenericCrudService();
|
|
|
|
|
|
|
+ const mockCrudService = require('../../../utils/generic-crud.service').GenericCrudService();
|
|
|
mockCrudService.getById.mockResolvedValue(mockUser);
|
|
mockCrudService.getById.mockResolvedValue(mockUser);
|
|
|
|
|
|
|
|
const response = await apiClient.get('/users/1');
|
|
const response = await apiClient.get('/users/1');
|
|
@@ -126,7 +125,7 @@ describe('Users API Integration Tests', () => {
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
it('应该在用户不存在时返回404', async () => {
|
|
it('应该在用户不存在时返回404', async () => {
|
|
|
- const mockCrudService = require('../../utils/generic-crud.service').GenericCrudService();
|
|
|
|
|
|
|
+ const mockCrudService = require('../../../utils/generic-crud.service').GenericCrudService();
|
|
|
mockCrudService.getById.mockResolvedValue(null);
|
|
mockCrudService.getById.mockResolvedValue(null);
|
|
|
|
|
|
|
|
const response = await apiClient.get('/users/999');
|
|
const response = await apiClient.get('/users/999');
|
|
@@ -151,7 +150,7 @@ describe('Users API Integration Tests', () => {
|
|
|
|
|
|
|
|
describe('错误处理', () => {
|
|
describe('错误处理', () => {
|
|
|
it('应该在服务错误时返回500状态码', async () => {
|
|
it('应该在服务错误时返回500状态码', async () => {
|
|
|
- const mockCrudService = require('../../utils/generic-crud.service').GenericCrudService();
|
|
|
|
|
|
|
+ const mockCrudService = require('../../../utils/generic-crud.service').GenericCrudService();
|
|
|
mockCrudService.getList.mockRejectedValue(new Error('Database error'));
|
|
mockCrudService.getList.mockRejectedValue(new Error('Database error'));
|
|
|
|
|
|
|
|
const response = await apiClient.get('/users?page=1&pageSize=10');
|
|
const response = await apiClient.get('/users?page=1&pageSize=10');
|
|
@@ -164,7 +163,7 @@ describe('Users API Integration Tests', () => {
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
it('应该在未知错误时返回通用错误消息', async () => {
|
|
it('应该在未知错误时返回通用错误消息', async () => {
|
|
|
- const mockCrudService = require('../../utils/generic-crud.service').GenericCrudService();
|
|
|
|
|
|
|
+ const mockCrudService = require('../../../utils/generic-crud.service').GenericCrudService();
|
|
|
mockCrudService.getList.mockRejectedValue('Unknown error');
|
|
mockCrudService.getList.mockRejectedValue('Unknown error');
|
|
|
|
|
|
|
|
const response = await apiClient.get('/users?page=1&pageSize=10');
|
|
const response = await apiClient.get('/users?page=1&pageSize=10');
|