vitest README

The project's README from github.com/vitest-dev/vitest. As one markdown file: README.md.



Vitest logo


Vitest

Next generation testing framework powered by Vite.

current vitest version badge

Get involved!

Documentation | Getting Started | Examples | Why Vitest?

中文文档



Features

Vitest requires Vite >=v6.4.0 and Node >=v22.12.0

import { assert, describe, expect, it } from 'vitest'

describe('suite name', () => {
  it('foo', () => {
    expect(1 + 1).toEqual(2)
    expect(true).to.be.true
  })

  it('bar', () => {
    assert.equal(Math.sqrt(4), 2)
  })

  it('snapshot', () => {
    expect({ foo: 'bar' }).toMatchSnapshot()
  })
})
$ npx vitest

Sponsors

vitest's sponsors

Credits

Thanks to:

Contribution

See Contributing Guide.

License

MIT License © 2021-Present VoidZero Inc. and Vitest contributors

vitest (vitest-dev/vitest)

Searching Database…

17.3K ·GitHub
这是什么?Vitest 是一个由 Vite 驱动的新一代 JavaScript 和 TypeScript 测试框架。它借助你现有的 Vite 配置来运行单元测试和组件测试。
Vitest 是框架还是库?它和 Jest 是什么关系?它是一个构建在 Vite 之上的完整测试框架:复用 Vite 的配置、转换器、解析器和插件,并提供与 Jest 兼容的 API(expect、mock、spy、快照),所以从 Jest 过来会觉得非常熟悉。
我怎么在自己的项目里把它跑起来?把它作为开发依赖安装(npm install -D vitest),然后运行 'vitest' 命令行工具。它以 ESM 优先,会自动读取应用现有的 vite 配置和插件,所以大多数项目不需要单独的测试配置。
我需要先装什么特定的东西吗?需要——项目里要有 Node >=v22.12.0(22.12、24 或 26+)和 Vite >=v6.4.0。除此之外没有强制要求;只有你主动启用浏览器模式(Browser Mode)时才会用到浏览器。
如果我是从 Jest 或旧环境迁移过来的,需要注意什么?最主要的问题是版本下限:使用较旧 Node 或 Vite 的项目必须先升级。从 Jest 本身迁移则很容易,因为 expect API、mock、stub、spy 和快照都是兼容的。
除了跑单元测试,它还能做什么?它可以通过 v8 或 istanbul 统计原生代码覆盖率,用 Tinybench 跑基准测试,用 expect-type 做类型层面的测试,还支持分片(sharding),把一次测试拆到多台机器上运行。
它能测试 Vue、React 或 Svelte 的组件吗?可以——开箱即用地支持 Vue、React、Svelte、Lit 和 Marko 的组件测试,还提供浏览器模式(Browser Mode),让测试直接在浏览器里原生运行。在 Node 环境下,它也可以通过 JSDOM 或 happy-dom 来 mock DOM 和浏览器 API。
为什么大家都说它快?它的监听模式(watch mode)的工作方式类似 Vite 的 HMR:智能且即时,你修改代码后只重跑受影响的部分,而不是整个测试套件。测试还可以并发运行并进行筛选。
我需要自己配置 TypeScript、JSX 或 ESM 支持吗?不需要——TypeScript 和 JSX 开箱即用,而且 Vitest 以 ESM 优先,原生支持顶层的 await。
Creator
vitest-dev
Size
72.4 MB
Stars
17.3K
Age
4y
Commits · 90 Days