Day8 vites 之 vitest配置第四版

pool

Type: 'threads' | 'forks' | 'vmThreads'

Default: 'threads'

Version: Since Vitest 1.0.0-beta

取值:用于运行测试的池。

threads * 线程 *

使用tinypool(Piscina 的轻量级分支)启用多线程。

注意:

  • 使用线程时,您无法使用与进程相关的 API,例如 process.chdir()

  • 一些用本机语言编写的库,例如 Prisma、 bcryptcanvas ,在多线程中运行时会出现问题并遇到段错误。

    • 在这些情况下,建议使用 forks 池。

forks * 叉子

通过tinypool使用 child_process 而不是 worker_threads

注意:

  • 测试和主进程之间的通信不如 threads 池那么快。

  • forks 池中提供了与进程相关的 API,例如 process.chdir()

vmThreads * 虚拟机线程 *

使用 threads 池中的 VM 上下文(在沙盒环境内)运行测试。

注意:

  • 这使得测试运行得更快,但运行 ESM 代码时 VM 模块不稳定。

  • 您的测试将泄漏内存 - 为了解决这个问题,请考虑手动编辑 poolOptions.vmThreads.memoryLimit 值。

警告

  • 在沙箱中运行代码有一些优点(测试速度更快),但也有许多缺点。

    • 本机模块中的全局变量(例如 fspath 等)与测试环境中存在的全局变量不同。因此,这些本机模块引发的任何错误都将引用与代码中使用的错误构造函数不同的错误构造函数

      try {
        fs.writeFileSync('/doesnt exist')
      }
      catch (err) {
        console.log(err instanceof Error) // false
      }
    • 导入 ES 模块会无限期地缓存它们,如果您有很多上下文(测试文件),这会导致内存泄漏。 Node.js 中没有可以清除该缓存的 API。

    • 在沙箱环境中访问全局变量需要更长的时间。

    • 使用此选项时请注意这些问题。 Vitest 团队无法解决我们这边的任何问题。

poolOptions

Type: Record<'threads' | 'forks' | 'vmThreads', {}>

Default: {}

Version: Since Vitest 1.0.0-beta

poolOptions.threads * 池选项.线程 *

threads 池的选项。

import { defineConfig } from 'vitest/config'
​
export default defineConfig({
  test: {
    poolOptions: {
      threads: {
        // Threads related options here
      }
    }
  }
})

poolOptions.threads.maxThreads

Type: number

Default: available CPU即可用 CPU

值: 最大线程数。您还可以使用 VITEST_MAX_THREADS 环境变量

poolOptions.threads.minThreads

Type: number

Default: available CPU即可用 CPU

值:最小线程数。您还可以使用 VITEST_MIN_THREADS 环境变量。

poolOptions.threads.singleThread

Type: boolean

Default: false

意义:

  • 在单个工作线程内使用相同的环境运行所有测试。

表现

  • 这将禁用内置模块隔离(您的源代码或内联代码仍将针对每个测试重新评估),但可以提高测试性能。

注意:

  • 尽管此选项将强制测试一个接一个地运行,但此选项与 Jest 的 --runInBand 不同。

    • Vitest 使用工作线程不仅可以并行运行测试,还可以提供隔离

    • 通过禁用此选项,您的测试将按顺序运行,但在相同的全局上下文中,因此您必须自己提供隔离。

  • 如果您依赖全局状态(前端框架通常这样做)或者您的代码依赖于为每个测试单独定义的环境,这可能会导致各种问题

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值