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

代码随想录算法训练营Day18|513.找树左下角的值、112. 路径总和、113. 路径总和ii、106.从中序与后序遍历序列构造二叉树

目录 513.找树左下角的值 前言 层序遍历 递归法 112. 路径总和 前言 递归法 113. 路径总和ii 前言 递归法 106.从中序与后序遍历序列构造二叉树 前言 思路 递归法 总结 513.找树左下角的值 题目链接 文章链接 前言 本题要求得到二叉树最后一行最左边的值&#xf…...

【蓝桥备赛】技能升级——二分查找

题目链接 技能升级 个人思路 需要给n个技能添加技能点&#xff0c;无论技能点加成如何衰减&#xff0c;每次始终都是选择当前技能加点加成最高的那一项技能&#xff0c;所以最后一次的加点一定也是加在当时技能攻击加成最高的那个。此时&#xff0c;我们去寻找最后一次的加点…...

zyqn-arm软中断设置

所有SGI都是边缘触发的&#xff0c;sgi的灵敏度类型是固定的&#xff0c;不能改变。 软中断初始化流程 1、初始化异常处理 2、初始化中断控制器 3、注册异常处理回调函数到CPU 4、连接软中断信号与注册软中断回调函数 5、使能中断控制器中的软中断中断 6、使能异常处理 …...

k8s---pod基础下

k8s的pod与docker重启策略的区别 k8s的重启策略 always deployment的yaml文件只能是always&#xff0c;pod的yaml三种模式都可以。不论正常退出还是非正常退出都重启。OnFailure&#xff1a;正常退出不重启&#xff0c;非正常退出会重启Never&#xff1a;正常退出和非正常退出…...

玩转朋友圈!这样运营朋友圈吸睛又吸金!

朋友圈已成为现代社交媒体中不可或缺的平台&#xff0c;并且有很大的潜力用于营销和推广。那么如何才能让朋友圈在众多用户中脱颖而出&#xff0c;吸引眼球并提升商业效益呢&#xff1f;主要从以下几点出发&#xff1a; 首先&#xff0c;要想吸引关注&#xff0c;您需要在朋友…...

react学习

目录 一、react基础 5.loadsh使用排序8.ref获取DOM对象10.props使用*13.UseEffect 二、 react使用redux三、美团外卖项目完成页面制作使用redux渲染页面使用react-router-dom评价 一、react基础 jsx 大括号的作用 {count} {userLlist.map((item)>{return <li key{item…...

vue-cli项目中vue.config.js的配置

vue-cli项目中vue.config.js的配置 一、直接上代码 一、直接上代码 let path require(path) let glob require(glob)function resolve(dir) {return path.join(__dirname, src/${dir}) }module.exports {pages: {index: {// page 的入口entry: src/main.js,// 模板来源temp…...

Github 2024-01-04 开源项目日报 Top10

根据Github Trendings的统计&#xff0c;今日(2024-01-04统计)共有10个项目上榜。根据开发语言中项目的数量&#xff0c;汇总情况如下&#xff1a; 开发语言项目数量Python项目3C项目2TypeScript项目2Java项目2Jupyter Notebook项目1Go项目1 系统设计指南 创建周期&#xff…...

使用GPTs+Actions自动获取第三方数据

目录 安装插件与GPT对话联网插件首先,创建GPTs。 Voxscript 官网:https://voxscript.awt.icu/index.htmlOpenAI Schema:https://voxscript.awt.icu/swagger/v1/swagger.yamlServer URL: servers: url: https://voxscript.awt.icu安装插件 要使用这个插件&...

git提交操作(不包含初始化仓库)

1.进入到本地的git仓库 查看状态 git status 如果你之前有没有成功的提交&#xff0c;直接看第5步。 2.追踪文件 git add . 不要提交大于100M的文件&#xff0c;如果有&#xff0c;看第5步 3.提交评论 git commit -m "你想添加的评论" 4.push (push之前可以再…...

做足彩网站推广/东莞网络营销全网推广

大家好&#xff0c;我是 CUGGZ。今天来分享 12 个 yyds 的微信小程序开源项目&#xff0c;速速收藏&#xff01;全文概览&#xff1a;wechat-app-mall&#xff1a;微信小程序商城&#xff1b;Vant Weapp&#xff1a;小程序 UI 组件库&#xff1b;iView Weapp&#xff1a;小程序…...

网站做优化的成本/沧州网站优化公司

什么是内部类&#xff1f; 内部类是指在一个外部类的内部再定义一个类。内部类作为外部类的一个成员&#xff0c;并且依附于外部类而存在的。内部类可为静态&#xff0c;可用protected和private修饰&#xff08;而外部类只能使用public和缺省的包访问权限&#xff09;。内部类主…...

石家庄商城网站建设/湖北疫情最新消息

金木水火土命查询表五行相生的顺序是:水生木,木生火,火生土,土生金,金生水; 五行相克的顺序是:金克木,木克土,土克水,水克火,火克金.金木水火土命查询表(2009-03-30)土命 金命 水命 查询表 金木 甲子年生海中金命&#xff08;1924&#xff0c;1984&#xff09; 乙丑年生海中金…...

即墨网站建设公司/武汉seo招聘网

text...........................

公司做网站比较好/360社区app

这里写自定义目录标题一、实验目的二、实验内容三、实验要求四、实验代码实验结果一、实验目的 理解操作系统的进程调度方法&#xff0c;并通过一个简单的进程调度模拟程序的实现&#xff0c;加深对进程调度算法&#xff0c;进程切换的理解。 二、实验内容 1、采用动态优先数…...

民政府公众信息网站建设/推广一次多少钱

所有题目均有四种语言实现。C++ 实现目录、Python实现目录、Java实现目录、JavaScript实现目录 题目 题目描述:去除文本多余空格,但不去除配对单引号之间的多余空格。给出关键词的起始和结束下标,去除多余空格后刷新关键词的起始和结束下标。输入描述: 输入为两行字符串: 第…...