当前位置: 首页 > news >正文

Day7 vitest 之 vitest配置第三版

项目目录

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-domtest('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 setupreturn {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 选项时)

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

相关文章:

Day7 vitest 之 vitest配置第三版

项目目录 runner Type: VitestRunnerConstructor Default: node, 当运行test的时候 benchmark,当运行bench测试的时候 功能 自定义测试运行程序的路径。 要求 应与自定义库运行程序一起使用。 如果您只是运行测试&#xff0c;则可能不需要这个。它主要由library作者使用 …...

git补充上次提交

1.首先&#xff0c;确保你还没有执行 git push 操作。如果尚未推送到远程仓库&#xff0c;那么可以在本地进行修正。 2.添加遗漏的文件&#xff1a; git add <遗漏的文件路径>3.提交新修改或新增的文件&#xff0c;并将它与上一次提交合并&#xff08;如果希望保持提交历…...

计算机网络名词解释

1.ICMP 网际控制报文 允许主机或路由器报告差错情况和提供有关异常情况的报告 2.RIP路由信息协议 是一种分布式的&#xff0c;基于距离向量的路由选择协议 3.BGP 外部网关协议 是不同自治系统的路由器之间交换路由信息的协议 4.IGMP 网际管理协议 使用多播路由器知道多播…...

flink table view datastream互转

case class outer(f1:String,f2:Inner) case class outerV1(f1:String,f2:Inner,f3:Int) case class Inner(f3:String,f4:Int) 测试代码 package com.yy.table.convertimport org.apache.flink.streaming.api.scala.StreamExecutionEnvironment import org.apache.flink.tabl…...

redis重启后数据丢失问题解决(亲测好用)

redis修改密码重启后发现redis中的数据丢失了 解决办法&#xff1a; 首先在redis的安装目录下查找重启之前的dump.rdb文件&#xff0c;发现只有当天的一个dump.rdb文件&#xff0c;确认不是重启备份的文件 然后我就全盘找一下dump.rdb的备份文件&#xff0c;找到前一天的备份…...

敬请期待……

敬请期待…… 《Python百宝箱》 序号文章目录直达链接表白系列1无法拒绝的表白界面https://want595.blog.csdn.net/article/details/1347448942满屏飘字表白代码https://want595.blog.csdn.net/article/details/1350373883无限弹窗表白代码...

3.10 Android eBPF HelloWorld调试(四)

一,读取eBPF map的android应用程序示例 1.1 C++源码及源码解读 /system/memory/bpfmapparsed/hello_world_map_parser.cpp //基于aosp android12#define LOG_TAG "BPF_MAP_PARSER"#include <log/log.h> #include <stdlib.h> #include <unistd.h&g…...

PyTorch常用工具(1)数据处理

文章目录 前言1 数据处理1.1 Dataset1.2 DataLoader 前言 在训练神经网络的过程中需要用到很多的工具&#xff0c;最重要的是数据处理、可视化和GPU加速。本章主要介绍PyTorch在这些方面常用的工具模块&#xff0c;合理使用这些工具可以极大地提高编程效率。 由于内容较多&am…...

docker-简单说说cgroup

前面我们简单说了下namespace&#xff0c; 现在我们来接着简单说说cgroup。通过docker-简单说说namespace文章我们知道&#xff1a; namespace 是为了隔离进程组之间的资源&#xff0c;那cgroup就是为了对进程组的监控和限制资源。Cgroup 可以限制进程组使用的资源数量和分配&a…...

印象笔记04: 如何将印象笔记超级会员价值最大化利用?

印象笔记04&#xff1a; 如何将印象笔记超级会员价值最大化利用&#xff1f; 为什么有这个问题 我不知道有没有人一开始接触印象笔记觉得非常好。奈何只能两个设备同步&#xff0c;局限太多。而会员活动比较优惠——就开了会员。而且我开了十年……。只能开发一下看看怎么最大…...

我的JDK动态代理流程

我的JDK动态代理流程 我梳理的动态代理流程大约是&#xff1a; 如果每一个框架都有自己的BPP&#xff0c;且自己的BPP中都有自己的wrapIfNecessory&#xff0c;那样可能就是一个BPP一个代理类。但通常应该都是各自的框架以提供 Advisior&#xff08;切面&#xff09;的方式&am…...

uniapp Vue3 面包屑导航 带动态样式

上干货 <template><view class"bei"><view class"container"><view class"indicator"></view><!-- 遍历路由列表 --><view v-for"(item, index) in routes" :key"index" :class&quo…...

openGauss学习笔记-174 openGauss 数据库运维-备份与恢复-导入数据-管理并发写入操作

文章目录 openGauss学习笔记-174 openGauss 数据库运维-备份与恢复-导入数据-管理并发写入操作174.1 事务隔离说明174.2 写入和读写操作174.3 并发写入事务的潜在死锁情况 openGauss学习笔记-174 openGauss 数据库运维-备份与恢复-导入数据-管理并发写入操作 174.1 事务隔离说…...

数据分析可被划分为4个重要的类别

1、描述型&#xff1a;发生了什么&#xff1f; 全面、准确、实时的数据有效的可视化 2、诊断型&#xff1a;为什么会发生&#xff1f; 能够深入了解问题的根本原因隔离所有混淆信息的能力 3、预测型&#xff1a;可能发生什么&#xff1f; 通过历史数据来预测特定的结果通过…...

爆火小游戏敲木鱼流量主小程序源码系统+完整的代码包以及安装搭建教程

随着移动互联网的快速发展&#xff0c;小程序已成为一种新的应用形态&#xff0c;深入到人们生活的方方面面。其中&#xff0c;小游戏由于其简单、有趣的特点&#xff0c;吸引了大量用户&#xff0c;也成为了许多开发者的首选。敲木鱼小游戏&#xff0c;以其独特的玩法和轻松的…...

Invoke和BeginInvoke的区别

Invoke和BeginInvoke的区别 本文导读&#xff1a;BeginInvoke() 调用时&#xff0c;当前线程会启用线程池中的某个线程来执行此方法&#xff0c;当前线程不被阻塞&#xff0c;继续运行后面的代码&#xff0c; Invoke() 调用时&#xff0c;会阻塞当前线程&#xff0c;等到 Invo…...

3 分钟为英语学习神器 Anki 部署一个专属同步服务器

Anki 介绍 Anki 是一款基于间隔重复&#xff08;Spaced Repetition&#xff09;原理的学习软件&#xff0c;想象一下&#xff0c;你的大脑就像是一个需要定期维护的精密仪器。间隔重复就好比是一种精准的维护计划&#xff0c;它通过在最佳时刻复习信息&#xff0c;来确保知识在…...

<HarmonyOS第一课>应用程序框架

【习题】应用程序框架 目录 判断题 单选题 多选题 判断题 1. 一个应用只能有一个UIAbility。错误 正确(True)错误(False) 2. 创建的Empty Ability模板工程&#xff0c;初始会生成一个UIAbility文件。正确 正确(True)错误(False) 3. 每调用一次router.pushUrl()方法&…...

SQL 解析 — 如何轻松实现新增语句

KaiwuDB 支持多种不同类型的 SQL 语句&#xff0c;例如 create、insert 等。本文将介绍在 KaiwuDB SQL Parser&#xff08;下文统称解析器&#xff09;中添加新语句的过程及其实现。我们将了解如何使用 goyacc 工具更新解析器&#xff0c;以及执行器和查询计划器&#xff08;pl…...

Android集成OpenSSL实现加解密-集成

导入so 将编译生成的 OpenSSL 动态库文件&#xff08;.so 文件&#xff09;复制到你的 Android 项目的 libs 目录中 导入头文件 将编译生成的include文件夹导入到项目中 build.gradle添加配置 defaultConfig {……testInstrumentationRunner "androidx.test.runner…...

CLaMP技术深度解析:对比学习如何实现语言与音乐的完美融合

CLaMP技术深度解析&#xff1a;对比学习如何实现语言与音乐的完美融合 【免费下载链接】muzic 这是一个微软研究院开发的音乐生成AI项目。适合对音乐、音频处理以及AI应用感兴趣的开发者、学生和研究者。特点是使用深度学习技术生成音乐&#xff0c;具有较高的创作质量和听觉体…...

LFM2.5-1.2B-Thinking-GGUF入门必看:3步完成低资源GPU部署(含健康检查命令)

LFM2.5-1.2B-Thinking-GGUF入门必看&#xff1a;3步完成低资源GPU部署&#xff08;含健康检查命令&#xff09; 1. 模型简介 LFM2.5-1.2B-Thinking-GGUF是Liquid AI推出的轻量级文本生成模型&#xff0c;专为低资源环境优化设计。这个模型采用GGUF格式&#xff0c;配合llama.…...

USB批量传输中ZLP的必要性:为何512字节整数倍数据包会丢失

1. USB批量传输中的ZLP到底是什么&#xff1f; 第一次遇到USB批量传输丢数据的问题时&#xff0c;我也是一头雾水。明明发送端显示数据已经成功发送&#xff0c;接收端却死活收不到完整数据。后来排查发现&#xff0c;问题出在数据包大小刚好是512字节的整数倍时。这就是我们今…...

从BiomixQA到黄帝内经:聊聊2024年那些‘小而美’的垂直医学问答数据集

2024医学垂直问答数据集全景&#xff1a;从BiomixQA到黄帝内经的实战选型指南 当ChatGPT在通用领域大放异彩时&#xff0c;医学AI的战场正悄然转向那些"小而美"的垂直数据集。不同于通用语料的粗放式训练&#xff0c;专业医学问答需要精确到细胞级的语义理解——一个…...

HackBGRT:UEFI启动界面定制的极简实施指南

HackBGRT&#xff1a;UEFI启动界面定制的极简实施指南 【免费下载链接】HackBGRT Windows boot logo changer for UEFI systems 项目地址: https://gitcode.com/gh_mirrors/ha/HackBGRT HackBGRT是一款专注于UEFI系统的开源工具&#xff0c;为用户提供安全高效的启动画面…...

【Django 实验三】个人主页开发实战

【Django 实验三】个人主页开发实战 作者&#xff1a;刘静怡 | 学号&#xff1a;F23016208 | 完成日期&#xff1a;2026年3月29日 目录 环境准备项目创建数据模型设计视图函数编写模板系统Admin 后台配置页面美化功能完善总结 一、环境准备 1.1 环境要求 Python: 3.10Django…...

给STM32密码锁加个“记忆”:手把手教你用CubeMX配置I2C读写EEPROM(AT24C02)

为STM32密码锁赋予持久记忆&#xff1a;CubeMX驱动AT24C02 EEPROM全攻略 当你的密码锁在断电后依然能记住最后一次设置的密码&#xff0c;这种"记忆"能力往往能大幅提升用户体验。本文将带你深入探索如何通过I2C总线连接AT24C02 EEPROM芯片&#xff0c;为基于STM32F1…...

手把手教你用逻辑分析仪抓取DVC1124的I2C波形(附CRC校验分析)

手把手教你用逻辑分析仪抓取DVC1124的I2C波形&#xff08;附CRC校验分析&#xff09; 在嵌入式硬件调试中&#xff0c;I2C通信的波形分析是验证设备交互正确性的关键步骤。集澈DVC1124作为一款高性能AFE芯片&#xff0c;其I2C协议中独特的CRC校验机制为通信可靠性提供了保障。本…...

STorM BGC V1.31硬件 + SimpleBGC源码:从零搭建三轴云台开发环境(含.Net框架避坑)

STorM BGC V1.31硬件 SimpleBGC源码&#xff1a;从零搭建三轴云台开发环境&#xff08;含.Net框架避坑&#xff09; 三轴云台作为稳定控制领域的经典应用&#xff0c;近年来在无人机、摄影设备、工业检测等领域展现出巨大潜力。STorM BGC V1.31硬件平台配合SimpleBGC开源架构&…...

【自动驾驶】从贝叶斯到卡尔曼:线性滤波的数学之美与实践之路

1. 贝叶斯概率&#xff1a;理解不确定性的语言 想象你正在雾天开车&#xff0c;前方隐约有个模糊的影子。你的大脑会快速判断&#xff1a;那可能是一个行人&#xff08;60%概率&#xff09;&#xff0c;也可能只是路标&#xff08;40%概率&#xff09;。这种在不确定环境中做判…...