diff --git a/src/api/helpPost.test.js b/src/api/helpPost.test.js
new file mode 100644
index 0000000..e163090
--- /dev/null
+++ b/src/api/helpPost.test.js
@@ -0,0 +1,60 @@
+import MockAdapter from 'axios-mock-adapter';
+import { api } from './auth'; // 添加api导入
+import { createPost, getPosts, getPostDetail, likePost, addPostComment } from './helpPost';
+
+describe('求助帖API', () => {
+  let mockAxios;
+
+  beforeEach(() => {
+    mockAxios = new MockAdapter(api);
+  });
+
+  afterEach(() => {
+    mockAxios.restore();
+  });
+
+  describe('createPost - 创建求助帖', () => {
+    it('应该正确发送帖子数据', async () => {
+      const postData = {
+        title: '测试标题',
+        content: '测试内容',
+        authorId: 'user123'
+      };
+      mockAxios.onPost('/help/posts', postData).reply(201, { code: 201 });
+
+      const response = await createPost(postData.title, postData.content, postData.authorId);
+      expect(response.status).toBe(201);
+    });
+  });
+
+  describe('getPosts - 获取求助帖列表', () => {
+    it('应该支持分页参数', async () => {
+      const page = 2, size = 10;
+      mockAxios.onGet('/help/posts', { params: { page, size } }).reply(200, {
+        code: 200,
+        data: []
+      });
+
+      const response = await getPosts(page, size);
+      expect(response.status).toBe(200);
+    });
+  });
+
+  describe('likePost - 点赞求助帖', () => {
+    it('应该正确发送点赞请求', async () => {
+      mockAxios.onPost('/help/posts/post123/like').reply(200, { code: 200 });
+      const response = await likePost('post123');
+      expect(response.status).toBe(200);
+    });
+  });
+
+  describe('addPostComment - 添加帖子评论', () => {
+    it('应该正确发送评论数据', async () => {
+      const comment = { content: '测试评论', author: 'user1' };
+      mockAxios.onPost('/help/posts/post456/comments', comment).reply(200, { code: 200 });
+      
+      const response = await addPostComment('post456', comment);
+      expect(response.status).toBe(200);
+    });
+  });
+});
\ No newline at end of file
