Day7 vitest 之 vitest配置第三版

news2025/5/25 14:24:00

项目目录

runner

  • Type: VitestRunnerConstructor

  • Default:

    • node, 当运行test的时候

    • benchmark,当运行bench测试的时候

  • 功能

    • 自定义测试运行程序的路径。

  • 要求

    • 应与自定义库运行程序一起使用。

    • 如果您只是运行测试,则可能不需要这个。它主要由library作者使用

benchmark

  • Type: { include?, exclude?, ... }

    • 运行 vitest bench 时使用的选项

benchmark.include 基准测

  • Type: string[]

  • 默认值: ['**/*.{bench,benchmark}.?(c|m)[jt]s?(x)']

  • 值:包括基准测试文件的 glob

  • 配置代码1

    /// <reference types="vitest" />
    import { defineConfig } from 'vite'
    import vue from '@vitejs/plugin-vue'
    
    // https://vitejs.dev/config/
    export default defineConfig({
      plugins: [vue()],
      test: {
        benchmark: {
          include: ["./scripts/*.{bench,benchmark}.?(c|m)[jt]s?(x)"]
          // include: ["./src/tests/*.{bench,benchmark}.?(c|m)[jt]s?(x)"]
        }
      }
    })
    
    ​
    ​
    ​
  • 配置代码2

    /// <reference types="vitest" />
    import { defineConfig } from 'vite'
    import vue from '@vitejs/plugin-vue'
    
    // https://vitejs.dev/config/
    export default defineConfig({
      plugins: [vue()],
      test: {
        benchmark: {
          // include: ["./scripts/*.{bench,benchmark}.?(c|m)[jt]s?(x)"]
          include: ["./src/tests/*.{bench,benchmark}.?(c|m)[jt]s?(x)"]
        }
      }
    })
    
    ​
    ​
    ​
  • 配置代码3

    /// <reference types="vitest" />
    import { defineConfig } from 'vite'
    import vue from '@vitejs/plugin-vue'
    
    // https://vitejs.dev/config/
    export default defineConfig({
      plugins: [vue()],
      test: {
        benchmark: {
          // include: ["./scripts/*.{bench,benchmark}.?(c|m)[jt]s?(x)"]
          // include: ["./src/tests/*.{bench,benchmark}.?(c|m)[jt]s?(x)"]
        }
      }
    })
    
    ​
    ​
  • 测试结果1

  • 测试结果2

  • 测试结果3

benchmark.exclude

  • Type: string[]

  • Default: ['node_modules', 'dist', '.idea', '.git', '.cache']

  • 值:排除基准测试文件的 glob

  • 代码配置

    /// <reference types="vitest" />
    import { defineConfig } from 'vite'
    import vue from '@vitejs/plugin-vue'
    
    // https://vitejs.dev/config/
    export default defineConfig({
      plugins: [vue()],
      test: {
        benchmark: {
          include: ["./scripts/*.{bench,benchmark}.?(c|m)[jt]s?(x)"],
          exclude: ["./src/tests/*.{bench,benchmark}.?(c|m)[jt]s?(x)"]
        }
      }
    })
    
  • 测试结果

benchmark.includeSource

  • Type: string[]

  • Default: []

  • 值:包括源内基准测试文件的 glob

  • 功能

    • 定义后,Vitest 将运行所有包含 import.meta.vitest 的匹配文件

  • 配置代码

    /// <reference types="vitest" />
    import { defineConfig } from 'vite'
    import vue from '@vitejs/plugin-vue'
    
    // https://vitejs.dev/config/
    export default defineConfig({
      plugins: [vue()],
      test: {
        benchmark: {
          includeSource: ["./scripts/*.{bench,benchmark}.?(c|m)[jt]s?(x)"],
        }
      }
    })
    
  • 测试结果

benchmark.reporters

  • Type: Arrayable<BenchmarkBuiltinReporters | Reporter>

  • Default: 'default'

  • 值:

    • 用于输出的自定义报告器。

    • 可以包含一个或多个

      • 内置报告名称

      • 报告器实例

      • 自定义报告器的路径。

  • 代码配置

    /// <reference types="vitest" />
    import { defineConfig } from 'vite'
    import vue from '@vitejs/plugin-vue'
    
    // https://vitejs.dev/config/
    export default defineConfig({
      plugins: [vue()],
      test: {
        benchmark: {
          reporters: 'default'
        }
      }
    })
    
  • 测试结果

benchmark.outputFile

  • Type: string | Record<string, string>

  • 功能:

    • 当指定了 --reporter=json 选项时,将基准测试结果写入文件。

    • 通过提供对象而不是字符串,您可以在使用多个报告器时定义单独的输出。

  • 使用

    • 若要通过 CLI 命令提供对象,请使用以下语法:

      • --outputFile.json=./path --outputFile.junit=./other-path

  • 测试结果

alias

  • 类型: Record<string, string> | Array<{ find: string | RegExp, replacement: string, customResolver?: ResolverFunction | ResolverObject }>

  • 功能:

    • 在内部测试中运行时定义自定义别名。

  • 注意:

    • 它们将与 resolve.alias 中的别名合并。

globals

  • Type: boolean默认情况下, vitest 不提供全局 API 以便明确

  • Default: false

    • 即默认情况下, vitest 不提供全局 API 以便明确

  • CLI: --globals, --globals=false

  • 功能:

    • 如果您想全局使用 API,可将 --globals 选项传递给 CLI 或在配置中添加 globals: true

  • 注意

    • 要让 TypeScript 使用全局 API,

      • 请将 vitest/globals 添加到 tsconfig.json 中的 types 字段

      // tsconfig.json
      {
        "compilerOptions": {
          "types": ["vitest/globals"]
        }
      }
      
    • 如果您已经在项目中使用 unplugin-auto-import ,您也可以直接使用它来自动导入这些API

      // vitest.config.ts
      import { defineConfig } from 'vitest/config'
      import AutoImport from 'unplugin-auto-import/vite'
      
      export default defineConfig({
        plugins: [
          AutoImport({
            imports: ['vitest'],
            dts: true, // generate TypeScript declaration
          }),
        ],
      })
      

  • 代码(不需要再引入API了)

    //配置文件
    /// <reference types="vitest" />
    import { defineConfig } from 'vite'
    import vue from '@vitejs/plugin-vue'
    
    // https://vitejs.dev/config/
    export default defineConfig({
      plugins: [vue()],
      test: {
        globals: true
      }
    })
    
    //test.js
    // import { bench } from 'vitest'//可以不再引入了
    
    bench('normal sorting', () => {
        const x = [1, 5, 4, 2, 3]
        x.sort((a, b) => {
            return a - b
        })
    }, { time: 1000 })
    
  • 测试结果

environment

  • Type: 'node' | 'jsdom' | 'happy-dom' | 'edge-runtime' | string

  • Default: 'node'

    • Vitest 中的默认环境是 Node.js 环境。

  • CLI: --environment=<env>

  • 值:将用于测试的环境

  • 注意:

    • 如果您正在构建 Web 应用程序,则可以通过 jsdomhappy-dom 使用类似浏览器的环境。

    • 如果您正在构建边缘功能,则可以使用 edge-runtime 环境

    • Vitest 还通过 vitest/environments 条目公开 builtinEnvironments ,以防您只想扩展它

  • 功能

    • 您可以指定用于该文件中所有测试的另一个环境

  • 使用

    • 通过在文件顶部添加 @vitest-environment 文档块或注释,

      • Docblock style: 文档块样式:

      • /// <reference types="vitest" />
        import { defineConfig } from 'vite'
        import vue from '@vitejs/plugin-vue'
        
        // https://vitejs.dev/config/
        export default defineConfig({
          plugins: [vue()],
          test: {
            environment: 'jsdom',
            globals: true
          }
        })
        
      • Comment style: 评论风格:

        // @vitest-environment happy-dom
        
        test('use happy-dom in this test file', () => {
          const element = document.createElement('div')
          expect(element).not.toBeNull()
        })
        
      • 为了与 Jest 兼容,还有一个 @jest-environment

        /**
         * @jest-environment jsdom
         */
        
        test('use jsdom in this test file', () => {
          const element = document.createElement('div')
          expect(element).not.toBeNull()
        })
        
  • 不同环境之间的测试顺序

    • 如果使用 --threads=false 标志运行 Vitest,您的测试将按以下顺序运行:

      • nodejsdomhappy-domedge-runtimecustom environments

        • 这意味着,具有相同环境的每个测试都分组在一起,但仍然按顺序运行。

  • 自定义环境(0.23.0开始)

    • 当使用非内置环境时

      • Vitest将尝试加载包Vitest -environment-${name}。

        • 该包应该导出一个形状为Environment的对象:

        • import type { Environment } from 'vitest'
          
          export default <Environment>{
            name: 'custom',
            transformMode: 'ssr',
            setup() {
              // custom setup
              return {
                teardown() {
                  // called after all tests with this env have been run
                }
              }
            }
          }
          
  • 配置代码

    /// <reference types="vitest" />
    import { defineConfig } from 'vite'
    import vue from '@vitejs/plugin-vue'
    
    // https://vitejs.dev/config/
    export default defineConfig({
      plugins: [vue()],
      test: {
        environment: 'jsdom',
        globals: true
      }
    })
    
  • 测试结果

environmentOptions

  • Type: Record<'jsdom' | string, unknown>

  • Default: {}

  • 功能:

    • 这些选项将传递到当前 environmentsetup 方法

  • 注意:

    • 默认情况下,如果您使用 JSDOM 作为测试环境,则只能配置 JSDOM 选项。

environmentMatchGlobs

  • Type: string, EnvironmentName

  • Default: []

  • 功能:

    • 基于 glob 自动分配环境。将使用第一个匹配。

  • 代码配置

    import { defineConfig } from 'vitest/config'
    
    export default defineConfig({
      test: {
        environmentMatchGlobs: [
          // 在tests/dom中的所有测试都将在jsdom中运行
          ['tests/dom/**', 'jsdom'],
          //所有测试以.edge.test.ts结尾的。将在边运行时运行
          ['**\/*.edge.test.ts', 'edge-runtime'],
          // ...
        ]
      }
    })
    

poolMatchGlobs

  • Type: string, 'threads' | 'forks' | 'vmThreads' | 'typescript'

  • Default: []

  • Version: Since Vitest 0.29.4

  • 功能:

    • 根据 glob 自动分配将在其中运行测试的池

  • 注意:

    • 将使用第一个匹配的

  • 代码配置

    import { defineConfig } from 'vitest/config'
    
    export default defineConfig({
      test: {
        poolMatchGlobs: [
          // all tests in "worker-specific" directory will run inside a worker as if you enabled `--threads` for them,
          //"worker-specific"目录下的所有测试都将在worker中运行,就像你为它们启用了'——threads '一样。
          ['**/tests/worker-specific/**', 'threads'],
          // run all tests in "browser" directory in an actual browser
          //在实际的浏览器中运行"browser"目录下的所有测试
          ['**/tests/browser/**', 'browser'],
          // all other tests will run based on "browser.enabled" and "threads" options, if you didn't specify other globs
          //所有其他测试将基于“browser.Enabled "和"threads"选项运行,如果你没有指定其他globs的话
          // ...
        ]
      }
    })
    

update

  • Type: boolean

  • Default: false

  • CLI: -u--update--update=false

  • 功能:

    • 更新快照文件。这将更新所有更改的快照并删除过时的快照。

watch

  • Type: boolean

  • Default: true

  • CLI: -w, --watch, --watch=false

  • 功能:

    • 启用观看模式

root

  • Type: string

  • CLI: -r <path>, --root=<path>

  • 功能

    • 设置项目根目录

reporters

  • Type: Reporter | Reporter[]

  • Default: 'default'

  • CLI: --reporter=<name>, --reporter=<name1> --reporter=<name2>

  • 值:

    • 用于输出的自定义记者。

    • 报告器可以是

      • 报告器实例

      • 用于选择内置报告器的字符串

      • 自定义实现的路径(例如 './path/to/reporter.ts''@scope/reporter'

outputFile

  • Type: string | Record<string, string>

  • CLI: --outputFile=<path>, --outputFile.json=./path

  • 功能:

    • 将测试结果写入文件。(当还指定 --reporter=json--reporter=html--reporter=junit 选项时)

    • 使用多个报告器时定义单独的输出(通过提供对象而不是字符串)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1355812.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

kubernetes(K8s)的使用和常用命令

K8S kubernetes&#xff0c;由于k和s之间有8个字符&#xff0c;所以简称k8s&#xff0c;是一个全新的基于容器技术的分布式架构领先方案&#xff0c;是谷歌严格保密十几年的秘密武器----Borg系统的一个开源版本&#xff0c;于2015年7月发布第一个正式版本&#xff0c;它的本质…

HTML如何设置多图片上传,并限制格式类型

在HTML如何设置多图片上传&#xff0c;并限制格式类型为jpg和png格式。 <input type"file" name"fileInput" id"fileInput"> 上面这行代码&#xff0c;只支持单个文件上传&#xff0c;且不支持文件类型过滤&#xff0c;在实际开发过程中&…

HTML5+CSS3+Vue小实例:彩色圆环溶解加载动画

实例:彩色圆环溶解加载动画 技术栈:HTML+CSS+Vue.js 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge&…

「HarmonyOS」验证码多TextInput输入框焦点自动跳转问题

需求背景&#xff1a;需要做一个多输入框的验证码模块&#xff0c;输入验证码时输入后光标会自动跳转至下一个输入框&#xff0c;删除验证码时会自动删除上一个输入框内容&#xff0c;并且光标跳转至上一个输入框内。6位验证码全部输完后进行登录请求 具体样式如下图&#xff1…

RFID数据中心智能资产管理系统

数据中心机房承担着保障企业关键数据处理的重要责任&#xff0c;机房的日常管理直接关系到整体机房的日常维护和运行安全&#xff0c;数据资产管理中心在监管机房各部分设备的运行情况、维护数据中心的资产方面发挥着重要的作用。 成功的数据中心机房管理不仅需要选择高可靠性…

理解UML中的依赖关系

理解UML中的依赖关系 在面向对象的设计中&#xff0c;理解各种类之间的关系对于构建一个清晰、可维护的系统至关重要。UML&#xff08;统一建模语言&#xff09;为我们提供了一种可视化这些关系的方式。今天&#xff0c;我们将深入探讨UML中的依赖关系&#xff08;Dependency&a…

Kubernetes 核心实战之一(精华篇 1/2)

文章目录 1&#xff0c;资源创建方式1.1 yaml1.2 命令行 2&#xff0c;NameSpace命名空间2.1 命令行创建ns2.2 yaml 创建ns 3&#xff0c;Pod3.1 命令行 创建pod3.2 yaml 创建pod3.3 可视化界面 创建3.3.1 Pod nginx3.3.2 Pod nginx tomcat3.3.3 Pod 2ngnix 1&#xff0c;资源…

ThreadLocal线程重用导致用户信息错乱的 Bug

在生产上遇到一个诡异的问题&#xff0c;有时获取到的用户信息是别人的。查看代码后&#xff0c;我发现他使用了 ThreadLocal 来缓存获取到的用户信息。 我们知道&#xff0c;ThreadLocal 适用于变量在线程间隔离&#xff0c;而在方法或类间共享的场景。如果用户信息的获取比较…

软件测试第二部分:白盒测试

概念与定义 白盒测试&#xff1a;侧重于系统或部件内部机制的测试&#xff0c;类型分为分支测试&#xff08;判定节点测试&#xff09;、路径测试、语句测试。 控制流分析(基于程序结构)&#xff1a;控制流分析是一类用于分析程序控制流结构的静态分析技术&#xff0c;目的在于…

8个流行的Python可视化工具包,你喜欢哪个?

用 Python 创建图形的方法有很多&#xff0c;但是哪种方法是最好的呢&#xff1f;当我们做可视化之前&#xff0c;要先明确一些关于图像目标的问题&#xff1a;你是想初步了解数据的分布情况&#xff1f;想展示时给人们留下深刻印象&#xff1f;也许你想给某人展示一个内在的形…

芯课堂 | LVGL基础知识(二)

引言 在 LVGL 中&#xff0c;用户界面的基本构建块是对象&#xff0c;也称为小部件(widget)。默认情况下&#xff0c;LVGL在背景上绘制旧对象&#xff0c;在前景上绘制新对象。 对象层级(Layers) 创建对象层级顺序 默认情况下&#xff0c;LVGL在背景上绘制旧对象&#xff0c…

【导出与导入Virtualbox虚拟机和启动连接openGauss数据库】

【导出与导入Virtualbox虚拟机和启动连接openGauss数据库】 一、导出虚拟机二、导入虚拟机三、启动数据库四、使用Data Studio连接数据库 一、导出虚拟机 选择关机状态的虚拟机 -> 管理菜单 -> 导出虚拟电脑 点击完成后&#xff0c;需要等待一小段时间&#xff0c;如…

基于gitlab 12.8.0版本的完整镜像过程

目前已在一台服务器上安装了gitlab 12.8.0&#xff0c;并且稳定运行了有几年了&#xff0c;其上面也创建了大量的项目。目前要求对该gitlab及其上面的所有仓库做一个完整的镜像。具体操作过程如下&#xff1a; 1、确认现有的gitlab的版本号 2、到gitlab官网下载相同版本号的gi…

【干货】Windows中定时删除system32目录下的.dmp文件教程

旭帆科技的技术人员除了给用户答疑解惑以外&#xff0c;还会主动测试软件性能&#xff0c;进行平台优化&#xff0c;除此之外&#xff0c;技术人员还会总结一些技术干货&#xff0c;这不&#xff0c;近期又提供了一份如何在Windows中定时删除system32目录下的.dmp文件的教程。感…

目标检测COCO数据集与评价体系mAP

1.mAP 2.IoU IoU也就是交并比&#xff0c;也称为 Jaccard 指数&#xff0c;用于计算真实边界框与预测边界框之间的重叠程度。它是真值框与预测边界框的交集和并集之间的比值。Ground Truth边界框是测试集中手工标记的边界框&#xff0c;用于指定对象图像的位置以及预测的边界框…

软件安全测试有哪些测试方法?安全测试报告如何申请?

随着网络条件越来越好&#xff0c;软件产品质量和软件安全处于同等重要的地位&#xff0c;一款好的软件产品安全系数至关重要&#xff0c;因此安全测试必不可少&#xff0c;那么软件安全测试有哪些测试方法呢?安全测试报告又该如何申请&#xff1f; 软件安全测试是指测试人员…

BUUCTF--ciscn_2019_n_31

这是一题32位的堆题&#xff0c;照常看看保护&#xff1a; 没有开启PIE&#xff0c;接着进行黑盒测试&#xff1a; 菜单题&#xff0c;扔进IDA看看代码逻辑&#xff1a; 4这个功能是提供所谓的进阶版&#xff0c;当时我测试的时候以为是里面有后门还是什么的。结果发现是虚晃一…

(17)Linux的进程阻塞进程程序替换 exec 函数簇

前言&#xff1a;本章我们讲解它的 options 参数。在讲解之前我们需要理解进程阻塞&#xff0c;然后我们重点讲解二进程程序替换&#xff0c;这是本章的重点&#xff0c;然后介绍一个进程替换函数 execl&#xff0c;通过介绍这个函数来打开突破口&#xff0c;引入进程创建的知识…

dubbo使用的三种配置

一. 准备注册中心 dubbo的注册中心在生产环境中&#xff0c;一般都会选择 ZooKeeper 下载 ZooKeeper ZooKeeper_3.4.14下载地址启动ZK # 解压安装包 tar -zxvf zookeeper-3.4.14.tar.gz# 进入安装目录&#xff0c; cp conf/zoo_sample.cfg conf/zoo.cfg# 启动ZK ./bin/zkServ…

Vue3-33-路由-路由的别名配置 alias

别名的作用 路由中的别名配置&#xff0c;可以实现 多个路径 对应 同一个路由。 例如 &#xff1a; 路由的路径是 /a; 配置别名为 &#xff1a; /a2; 则 访问 /a 或 /a2 的时候&#xff0c;都可以访问到 同一个组件。 别名的特点 关键字 &#xff1a; alias 当通过别名进行路由…