拦截Axios
请求返还Mock
数据, 用于测试和开发。
(mockDatas: MockConfig[], mockOptions?: MockOptions | undefined) => void
: Mock Axios
mockDatas
: 一个数组, 当axios
请求时,会检查对应的url
、method
,当匹配时会返回对应的response
数据。url
:string | RegExp
类型, 需要匹配的url, 可以是字符串或正则表达式。当是字符串时会检查axios
请求的url
是否包含有该url
。当是正则表达式时会检查axios
请求的url
是否匹配该url
。method
:GET
|POST
|PUT
|DELETE
|PATCH
, 默认为空即匹配所有类型的请求timeout
:number
类型, 默认值:300
, 单位:ms
, 返回结果的延迟的时间response
: 返回的mock的数据对象adapter
: 自定义的适配器函数,参考adapter, 该函数接受两个参数一个是config
,一个是匹配到的mockData
对象,返回值为response
的数据对象,通过该参数你可以更自由的定义返回的数据(如验证接口权限)。
mockOptions
isUseDefaultAdapter
:Boolean
, 默认为true
, 如果开启,没有拦截到的请求会以axios
默认方式发送请求isEffect
:Boolean
, 默认为true
, 通过该参数你可以在测试环境中打开mockAxios
,在生产环境中关闭mockAxios
isLog
:Boolean
, 默认为true
, 是否打印mockAxios
的请求日志logger
:Function
, 替换默认的日志函数
import { mockAxios } from '@ckpack/mock-axios';
mockAxios([{
url: 'https://test.com/v1/user/1',
response: {
data: {
id: 1,
name: 'admin',
},
},
}], {
isEffect: process.env.NODE_ENV === 'development',
});
(mockDatas: MockConfig[]) => MockConfig[]
: 构造mockDatas的辅助函数。该函数可以配合IDE来获取类型提示
mockDatas
: 同mockAxios
的mockDatas
参数。
import { defineConfig } from '@ckpack/mock-axios';
const mockDatas = defineConfig([
{
url: 'https://test.com/v1/user/1',
response: {
data: {
id: 1,
name: 'admin',
},
},
},
]);
// mockAxios.js
import { mockAxios } from '@ckpack/mock-axios';
mockAxios([{
method: 'GET',
url: /https:\/\/test.com\/v1\/user\/\d+/,
response: {
data: [{
id: 1,
name: 'admin',
}],
},
}, {
method: 'POST',
url: 'https://test.com/v1/user/create',
adapter: (axiosConfig) => {
return {
data: axiosConfig.data,
};
},
}]);
在其他文件中
import axios from 'axios';
import './mockAxios.js';
await axios.get('https://test.com/v1/user/1');
// 返回 { data: [{ id: 1, name: 'admin' }] }
await axios.post('https://test.com/v1/user/create', {
id: 1,
name: 'admin',
});
// 返回 { data: { id: 1, name: 'admin' } }
await axios.post('https://test.com/v1/user/create', {
id: 2,
name: 'test',
});
// 返回 { data: { id: 2, name: 'test' } }