跳转到内容

错误模拟

插件支持错误模拟功能,允许你为 mock 请求配置错误概率和错误类型。

基本用法

ts
import { defineMock } from 'vite-plugin-mock-dev-server'

export default defineMock({
  url: '/api/error-simulation',
  method: 'GET',
  body: { success: true, message: '请求成功' },
  error: {
    probability: 0.5, // 50% 的错误概率
    status: 500,
  }
})

配置选项

error

  • 类型: MockErrorConfig
  • 描述: 配置错误模拟

MockErrorConfig

选项类型默认值描述
probabilitynumber0.5错误概率(0-1)
statusnumber500错误状态码
statusTextstring-错误状态文本
bodyResponseBody | ResponseBodyFn-自定义错误响应体,适用于 status 为 200,但响应体需要模拟错误场景

示例

不同错误类型

ts
import { defineMock } from 'vite-plugin-mock-dev-server'

export default defineMock([
  {
    url: '/api/error-simulation/404',
    method: 'GET',
    body: { success: true, message: '请求成功' },
    error: {
      probability: 0.7,
      status: 404,
    }
  },
  {
    url: '/api/error-simulation/text',
    method: 'GET',
    body: '请求成功',
    type: 'text',
    error: {
      probability: 0.5,
      status: 500,
    }
  }
])

自定义错误响应体

ts
import { defineMock } from 'vite-plugin-mock-dev-server'

export default defineMock({
  url: '/api/error-simulation/custom-body',
  method: 'GET',
  body: { code: 200, msg: '成功', result: { data: 'some data' } },
  error: {
    probability: 0.5,
    status: 200, // 网络请求成功
    body: { code: 500, msg: '内部错误', result: null } // 但返回错误的数据结构
  }
})

空结果模拟

ts
import { defineMock } from 'vite-plugin-mock-dev-server'

export default defineMock({
  url: '/api/error-simulation/empty-result',
  method: 'GET',
  body: { code: 200, msg: '成功', result: { data: 'some data' } },
  error: {
    probability: 0.5,
    status: 200,
    body: { code: 200, msg: '成功', result: {} } // 成功状态但结果为空
  }
})

动态错误响应

ts
import { defineMock } from 'vite-plugin-mock-dev-server'

export default defineMock({
  url: '/api/error-simulation/dynamic-body',
  method: 'GET',
  body: { code: 200, msg: '成功', result: { data: 'some data' } },
  error: {
    probability: 0.5,
    status: 200,
    body: (request) => {
      // 根据请求参数动态生成错误响应
      return {
        code: 500,
        msg: `请求错误: ${request.query.id || 'unknown'}`,
        result: null
      }
    }
  }
})

为何使用错误模拟?

错误模拟在以下场景中非常有用:

  • 测试错误处理:验证应用程序是否正确处理来自服务器的错误响应。
  • 模拟网络问题:测试当服务器不可用或返回错误时,应用程序的行为表现。
  • 提升测试覆盖率:通过模拟多种错误场景,增加测试的覆盖范围。
  • 重试机制:测试应用程序在发生错误时如何处理重试操作。
  • 概率控制:使用probability选项来控制错误发生的概率,从而实现更真实的测试场景。

基于 MIT 许可发布