# 数据 mock 0.4.0+
# 静态配置
即将 mock 数据直接填在该接口的配置中。
# 简单对象
简单粗暴,填数据就完事儿了~
{
pathList: [
// 以 foo 接口为例
{
path: 'foo',
// 对象形式
mock: { code: 0, data: 'some data' },
},
],
}
# mock 函数
使用函数形式,用法上会更灵活一些。
{
pathList: [
// 以 foo 接口为例
{
path: 'foo',
// 函数形式
mock: (params) => ({
code: params.mockCode,
data: params.mockData,
}),
},
],
}
TIP
params
即最终传入接口的参数对象。
import { exampleApi } from '@/apis/'
// 填写 mock 数据
const mockCode = 0
const mockData = { foo: 'bar' }
// 请求将收到 mock 数据
exampleApi.foo({ mockCode, mockData })
.then(({ code, data }) => {
console.log(code, data) // 0 {foo: "bar"}
})
# 多接口公共 mock
mock 属性不仅可以填在各个接口处,也可以将其放在上一级,mock 当前配置中的所有接口。
{
// 公共 mock
mock: ({ __mockData__ }) => __mockData__,
pathList: [
// 自身的 mock 配置优先级更高
{ path: 'foo', mock: { code: 0 } },
// 没填自身 mock,则默认使用公共 mock
{ path: 'bar' },
// 禁用 mock
{ path: 'null', mock: null },
],
}
import { exampleApi } from '@/apis/'
const __mockData__ = { code: 123 }
// 使用自己定义 mock 数据
exampleApi.foo({ __mockData__ })
.then(({ code }) => {
console.log(code) // 0
})
// 使用公共的 mock 数据
exampleApi.bar({ __mockData__ })
.then(({ code }) => {
console.log(code) // 123
})
更多配置优先级内容请参阅配置说明部分。
# 动态配置
即为每个导出的 api
函数添加 mock
属性,在业务侧用以下方式调用。
import { exampleApi } from '@/apis/'
// 填写 mock 数据
exampleApi.foo.mock = {
code: 0,
data: { foo: 'bar' },
}
// 同样支持 mock 函数
exampleApi.foo.mock = () => ({
code: 0,
data: { foo: 'bar' },
})
// 请求将收到 mock 数据
exampleApi.foo().then(({ code, data }) => {
console.log(code, data) // 0 {foo: "bar"}
})
# 同时配置
# 优先级
若是同时配置了静态和动态 mock,动态配置的 mock 数据优先级更高。
TIP
优先级:动态 > 静态
- 接口配置
{
pathList: [
{
path: 'foo',
mock: (params) => ({ code: params.mockCode }),
},
],
}
- 业务侧
import { exampleApi } from '@/apis/'
// 动态配置的数据将覆盖静态配置的数据
exampleApi.foo.mock = { code: 1 }
exampleApi.foo({ mockCode: 0 })
.then(({ code }) => {
console.log(code) // 1
})
# 关闭 mock
可以通过以下代码实现关闭 mock 功能。
import { exampleApi } from '@/apis/'
// 关闭 mock
exampleApi.foo.mock = null
// 即使传递 mock 数据也不起作用
exampleApi.foo({ mockCode: 404 })
.then(({ code }) => {
console.log(code) // 实际接口的返回值
})
TIP
其实动态配置 exampleApi.foo.mock
的默认值就是静态配置的值,而在 tua-api
底层读取的就是 exampleApi.foo.mock
。
所以自然动态配置的优先级更高,并且赋值为 null
即可关闭 mock。