You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Vitest覆盖率报告会统计仅导出枚举的文件?

Vitest枚举文件分支覆盖率统计异常问题

背景

我们团队执行100%分支覆盖策略,不追踪函数或行覆盖率,认为这是代码覆盖率与开发生产力之间的最佳平衡方案。

问题详情

Vitest会将仅包含枚举导出的文件判定为存在两个未覆盖分支。示例枚举文件代码如下:

export enum URL {
  preSignedUploadUrl = '/case-document/upload/api?fileType=',
  saveDocumentUploadToMongoUrl = '/case-document/upload/api?caseReference=',
}

虽然编写以下测试代码可以覆盖这些分支,但这类测试并非有实际业务价值的单元测试,仅为满足覆盖率指标而存在:

import { describe } from 'vitest'
import { URL } from '@config/urls'

describe('urls', () => {
  it('has the correct URLs', () => {
    expect(URL.preSignedUploadUrl).toEqual(
      '/case-document/upload/api?fileType=',
    )
    expect(URL.saveDocumentUploadToMongoUrl).toEqual(
      '/case-document/upload/api?caseReference=',
    )
  })
})

当前Vitest配置

import { defineConfig, configDefaults } from 'vitest/config'
import react from '@vitejs/plugin-react'

const config = {
  plugins: [react()],
  test: {
    coverage: {
      provider: 'istanbul',
      reporter: ['cobertura', 'json', 'html', 'text-summary'],
      reportsDirectory: './coverage',
      branches: 100,
      all: true,
      include: ['**/*.ts', '**/*.tsx'],
      exclude: ['**/*.spec.ts', '**/*.spec.tsx', '.next/*'],
      src: process.cwd() + '/src',
    },
    setupFiles: './setupTests.js',
    exclude: [...configDefaults.exclude, './.next/'],
    environment: 'happy-dom',
  },
}

export default defineConfig(config)

内容的提问来源于stack exchange,提问作者Mild Fuzz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 06:45:22