vite-plugin-mock配置和QA

vite-plugin-mock配置

vite-plugin-mock配置

这个配置其实按照官网的来就很好,如果觉得官网看不明白的,可以接着我的往下看。

我们以vue3 + ts项目为例。

首先,在项目根目录创建文件夹mock用来保存mock的相关文件。

然后,我们在mock文件夹中创建index.ts入口文件和HelloWorld.ts测试文件。

// index.ts/index.js
import HelloWorld from './HelloWorld'
export default [...HelloWorld]

// HelloWorld.ts
import { MockMethod } from 'vite-plugin-mock'

export default [
  {
    url: '/helloWorld', // 注意,这里只能是string格式
    method: 'get',
    response: ({ query }:any) => {
      console.log(query)
      return 'hello world'
    }
  }
] as MockMethod[] // 这里其实就是定义数据格式的,不了解的同学可以参考typescript的官方文档

// HelloWorld.js 没有使用typescript的话,这么写就可以了
export default [
  {
    url: '/helloWorld', // 注意,这里只能是string格式
    method: 'get',
    response: ({ query }:any) => {
      console.log(query)
      return 'hello world'
    }
  }
]

准备好这两个文件,我们就可以开始配置了。既然是vite的插件,我们当然需要到vite.config.js文件中进行配置,配置如下:

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'

import { viteMockServe } from 'vite-plugin-mock'

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [vue(), viteMockServe({
    mockPath: 'mock', // mock文件所在文件夹
    enable: true, // 是否应用
    watchFiles: true, // 监听mock文件变化
    logger: true,
    supportTs: true, // 如果是true,js文件将会被忽视
  })]
})

配置完成之后,我们去HelloWorld.vue文件调用一下。

import { onBeforeMount, ref } from 'vue'
import axios from 'axios'

defineProps<{ msg: string }>()

const count = ref(0)

onBeforeMount(async () => {
  const message = await axios.get('/helloWorld')
  console.log(message)
})

启动项目,看看结果:
在这里插入图片描述

net::ERR_NAME_NOT_RESOLVED问题

整个使用过程,其实并不是那么顺利的。

我一开始以为vite-plugin-mockmockjs一样可以支持正则表达式,事实上并不是。

如果你在请求地址前面加东西,例如/test/helloWorld或者http://test.com/helloWorld的话,就会出现地址解析错误。所以,地址一定要和配置一致。

不过,它是支持/helloWorld/:name这样的带参地址的,也就是说/helloWorld/test它是认的,这点要注意。但是,这个配置依然很严格,如果你的地址变成/helloWorld/test/test,它依然会报错。

wsl的docker开发容器问题

在wsl中的docker开发容器中开发,会发现无法正常拦截请求。
这是因为端口转发问题,使得服务无法被找到。
配置一下vite.conig.js文件就可以了,增加一个端口转发,把端口再指回来:

server: {
  port: 5173,
  host: true,
  proxy: {
    "^/api": {
      target: "http://localhost:5173/",
      changeOrigin: true,
    },
  },
},
vite-plugin-mockVite 中用于 mock 数据的插件,可以通过配置来实现 mock 数据的自定义。 首先需要安装 vite-plugin-mock: ``` npm install vite-plugin-mock --save-dev ``` 然后在 `vite.config.js` 中引入插件并进行配置: ```js import { defineConfig } from 'vite'; import path from 'path'; import { createMockMiddleware } from 'vite-plugin-mock'; export default defineConfig({ // 其他配置... plugins: [ createMockMiddleware({ mockPath: 'mock', // mock 文件所在的目录 watchFiles: true, // 是否监听文件变化 localEnabled: true, // 是否启用本地 mock,开启后会优先查找 mock 文件夹中的文件 prodEnabled: false, // 是否启用生产环境 mock,开启后会在生产环境中使用 mock 数据 injectCode: ` import { setupMock } from './mock/setup'; setupMock(); `, // 注入代码,可以自定义 mock 的初始化操作 }), ], }); ``` 上面的配置中,我们指定了 mock 文件所在的目录为 `mock`,并启用了本地 mock,但禁用了生产环境的 mock。在 `injectCode` 中,我们引入了一个 `setupMock` 方法来初始化 mock 数据,这个方法可以根据自己的需要进行编写。 在 `mock` 目录下可以创建各种 `.js`、`.ts` 等文件来编写 mock 数据,比如: ```js // mock/user.js export default { 'GET /api/user': { id: 1, name: '张三' }, 'POST /api/user': (req, res) => { const { name } = req.body; res.send({ id: 2, name }); }, }; ``` 上面的代码中,我们模拟了一个用户信息的 API,可以通过 GET 请求获取用户信息,也可以通过 POST 请求修改用户信息。 最后需要注意的是,vite-plugin-mock 只能用于 mock 接口数据,无法模拟前端的行为,比如点击事件等。如果需要模拟前端行为,可以考虑使用 Jest、Cypress 等测试框架。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值