axios-mock-adapter使用

发布于:2024-04-09 ⋅ 阅读:(160) ⋅ 点赞:(0)


axios-mock-adapter 是一个用于模拟 axios HTTP 请求的库。它允许你在测试或开发过程中,为 axios 实例提供模拟的响应,以便在没有实际后端服务的情况下进行前端功能的开发和测试。

1. 安装 axios-mock-adapter

首先,你需要安装 axios-mock-adapter。你可以使用 npm 或 yarn 来安装它:

注意:安装到开发环境!不要直接默认安装到

npm install axios-mock-adapter --save-dev  
# 或者  
yarn add axios-mock-adapter --dev

2. 引入所需的库

在你的测试文件或需要模拟请求的文件中,引入 axiosaxios-mock-adapter

import axios from 'axios';  
import MockAdapter from 'axios-mock-adapter';

3. 创建一个模拟适配器实例

接下来,你需要创建一个 MockAdapter 实例,并将其与你的 axios 实例关联起来:

// 创建axios实例
const service = axios.create({
  // axios中请求配置有baseURL选项,表示请求URL公共部分
  baseURL: import.meta.env.VITE_APP_BASE_API,
  // 超时
  timeout: 10000
})

// 创建一个 MockAdapter 实例,并将其与你的 axios 实例关联起来
const mock = new MockAdapter(service);

4. 定义模拟响应

使用 mock 实例的 onGetonPostonPutonDelete 等方法来定义针对不同 HTTP 方法的模拟响应:

mock.onGet('/api/users').reply(200, {  
  users: [  
    { id: 1, name: 'John Doe' },  
    { id: 2, name: 'Jane Doe' }  
  ]  
});  
  
mock.onPost('/api/users').reply(function (config) {  
  // 你可以访问请求的 config 对象,包括请求头和请求体  
  const { data } = config;  
  return [201, { id: data.id, name: data.name }]; // 返回状态码和响应数据  
});

建议使用单独一个mock文件夹,导入的形式来引入

// mock.js
export const MockGets = {
    '/captchaImage': {
        "msg": "操作成功",
        "code": 200,
        "captchaEnabled": true,
        "uuid": "352f4bb7088d435dad641c34aad337c4"
    }
}

// service.js
Object.keys(MockGets).forEach(function(key) {
  mock.onGet(key).reply(200, MockGets[key]);
  console.log(key + ": " + MockGets[key]);
});

5. 在你的代码中使用 axios

axios.get('/api/users')  
  .then(response => {  
    console.log(response.data); // 输出模拟的用户列表  
  })  
  .catch(error => {  
    console.error(error);  
  });

6. 在测试或开发完成后清理模拟

当你完成测试或开发,并希望使用真实的后端服务时,你需要确保移除或禁用所有的模拟。这通常是通过销毁 MockAdapter 实例或移除模拟定义来完成的。

mock.restore(); // 恢复所有模拟,使得 axios 请求将再次发往实际服务器

网站公告

今日签到

点亮在社区的每一天
去签到