当前位置: 首页 > 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…...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势&#xff1a;专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发&#xff0c;是一款收费低廉但功能全面的Windows NAS工具&#xff0c;主打“无学习成本部署” 。与其他NAS软件相比&#xff0c;其优势在于&#xff1a; 无需硬件改造&#xff1a;将任意W…...

CTF show Web 红包题第六弹

提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框&#xff0c;很难让人不联想到SQL注入&#xff0c;但提示都说了不是SQL注入&#xff0c;所以就不往这方面想了 ​ 先查看一下网页源码&#xff0c;发现一段JavaScript代码&#xff0c;有一个关键类ctfs…...

ubuntu搭建nfs服务centos挂载访问

在Ubuntu上设置NFS服务器 在Ubuntu上&#xff0c;你可以使用apt包管理器来安装NFS服务器。打开终端并运行&#xff1a; sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享&#xff0c;例如/shared&#xff1a; sudo mkdir /shared sud…...

Go 语言接口详解

Go 语言接口详解 核心概念 接口定义 在 Go 语言中&#xff0c;接口是一种抽象类型&#xff0c;它定义了一组方法的集合&#xff1a; // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的&#xff1a; // 矩形结构体…...

如何将联系人从 iPhone 转移到 Android

从 iPhone 换到 Android 手机时&#xff0c;你可能需要保留重要的数据&#xff0c;例如通讯录。好在&#xff0c;将通讯录从 iPhone 转移到 Android 手机非常简单&#xff0c;你可以从本文中学习 6 种可靠的方法&#xff0c;确保随时保持连接&#xff0c;不错过任何信息。 第 1…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)

宇树机器人多姿态起立控制强化学习框架论文解析 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架&#xff08;一&#xff09; 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...

Matlab | matlab常用命令总结

常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...

数据库分批入库

今天在工作中&#xff0c;遇到一个问题&#xff0c;就是分批查询的时候&#xff0c;由于批次过大导致出现了一些问题&#xff0c;一下是问题描述和解决方案&#xff1a; 示例&#xff1a; // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

【Oracle】分区表

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

C# 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...