测试筛选
用于测试套件(suite)和测试的筛选(filtering)、超时(timeouts)、并发(concurrent)。
CLI
你可以使用 CLI 按名称筛选测试文件:
bash
$ vitest basic
将只执行包含 basic
的测试文件,例如:
basic.test.ts
basic-foo.test.ts
basic/foo.test.ts
你还可以使用 -t, --testNamePattern <pattern>
选项按全名过滤测试。当你想按文件内定义的名称而不是文件名本身进行过滤时,这将非常有用。
指定超时阈值
你可以选择将超时阈值(以毫秒为单位)作为第三个参数传递给测试。默认值为 5 秒。
ts
import { test } from 'vitest'
test('name', async () => {
/* ... */
}, 1000)
Hooks 也可以接收超时阈值,默认值为 5 秒。
ts
import { beforeAll } from 'vitest'
beforeAll(async () => {
/* ... */
}, 1000)
跳过测试套件和测试
使用 .skip
以避免运行某些测试套件或测试
ts
import { assert, describe, it } from 'vitest'
describe.skip('skipped suite', () => {
it('test', () => {
// 已跳过此测试套件,无错误
assert.equal(Math.sqrt(4), 3)
})
})
describe('suite', () => {
it.skip('skipped test', () => {
// 已跳过此测试,无错误
assert.equal(Math.sqrt(4), 3)
})
})
选择要运行的测试套件和测试
使用 .only
仅运行某些测试套件或测试
ts
import { assert, describe, it } from 'vitest'
// 仅运行此测试套件(以及标记为 Only 的其他测试套件)
describe.only('suite', () => {
it('test', () => {
assert.equal(Math.sqrt(4), 3)
})
})
describe('another suite', () => {
it('skipped test', () => {
// 已跳过测试,因为测试在 Only 模式下运行
assert.equal(Math.sqrt(4), 3)
})
it.only('test', () => {
// 仅运行此测试(以及标记为 Only 的其他测试)
assert.equal(Math.sqrt(4), 2)
})
})
未实现的测试套件和测试
使用 .todo
留存将要实施的测试套件和测试的待办事项
ts
import { describe, it } from 'vitest'
// 此测试套件的报告中将显示一个条目
describe.todo('unimplemented suite')
// 此测试的报告中将显示一个条目
describe('suite', () => {
it.todo('unimplemented test')
})