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

2000-2024年上市公司产学研合作数据

产学研合作&#xff08;University-Industry Collaboration, UIC&#xff09;是衡量企业与高校及科研机构协同创新程度的核心指标。本数据集基于中国上市公司年度报告中披露的客户及合作方清单构建&#xff0c;由团队依据公开披露信息测算&#xff0c;时间覆盖20002024年。核心…...

收藏!小白程序员必看:如何成为AI大模型应用开发工程师,解锁高薪新机遇?

AI大模型应用开发工程师是连接技术与产业的关键角色&#xff0c;负责将复杂AI技术转化为实用工具。他们需分析业务需求、选择适配技术、开发对接应用&#xff0c;并进行测试优化与运维。这一职业因“技术业务”复合能力稀缺&#xff0c;薪资待遇优厚&#xff0c;是当前极具吸引…...

实测Taotoken多模型聚合服务的延迟与稳定性观感分享

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 实测Taotoken多模型聚合服务的延迟与稳定性观感分享 作为需要频繁调用大模型API的开发者&#xff0c;服务的稳定性和可预测性是影响…...

国产AI芯片CSA1-N8S1684深度解析:140.8Tops算力如何破局推理市场

1. 项目概述&#xff1a;当算力成为新基建&#xff0c;一颗国产AI芯片的破局之路最近圈子里都在聊一个词&#xff1a;“算力焦虑”。无论是做大模型训练的公司&#xff0c;还是搞自动驾驶、生物制药的团队&#xff0c;都在为GPU的供应和成本发愁。就在这个当口&#xff0c;一款…...

【Oracle数据库指南】第36篇:Oracle用户与权限管理详解(完整版)

上一篇【第35篇】Oracle特殊对象——簇与索引组织表&#xff08;IOT&#xff09; 下一篇【第37篇】Oracle角色与PROFILE管理详解 摘要 Oracle数据库的用户与权限管理是安全管理的核心&#xff0c;建立科学的用户体系是保障数据安全的第一步。本文系统讲解Oracle用户账户的完整…...

LLM长序列服务优化:LServe的块稀疏注意力技术

1. 长序列LLM服务的核心挑战在当今AI领域&#xff0c;大型语言模型&#xff08;LLM&#xff09;已成为处理长文本、复杂推理和多轮对话的关键工具。然而&#xff0c;随着上下文窗口的不断扩展&#xff08;从最初的2k到现在的512k甚至更长&#xff09;&#xff0c;传统的服务系统…...

高性能虚拟显示器驱动架构解析:Parsec VDD核心技术实现与优化

高性能虚拟显示器驱动架构解析&#xff1a;Parsec VDD核心技术实现与优化 【免费下载链接】parsec-vdd ✨ Perfect virtual display for game streaming 项目地址: https://gitcode.com/gh_mirrors/pa/parsec-vdd Parsec Virtual Display Driver (VDD) 是基于Windows Id…...

大模型的token究竟是什么?如何通俗易懂地解释?

说实话&#xff0c;最开始我第一次撞见「Token」这个词&#xff0c;第一反应还以为是武侠里的令牌&#xff0c;也像游乐场的游戏代币&#xff0c;得投币才能启动机器那种。 一直以来都没人直白地讲解过 Token 到底是什么&#xff0c;我也就稀里糊涂跟着用&#xff0c;始终一知…...

基于Docker部署开源系统监控工具clwatch:原理、实战与安全指南

1. 项目概述&#xff1a;一个开源的系统监控仪表盘最近在GitHub上闲逛&#xff0c;发现了一个挺有意思的项目&#xff0c;叫clwatch。光看名字&#xff0c;你可能会联想到htop或者glances这类命令行下的系统监控工具。没错&#xff0c;clwatch的核心定位就是一个在终端里运行的…...

通过taotoken的cli工具一键配置团队统一的ai开发环境

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 通过Taotoken的CLI工具一键配置团队统一的AI开发环境 基础教程类&#xff0c;面向技术团队负责人或DevOps工程师&#xff0c;目标是…...