Skip to content
Vitest 3
Main Navigation Руководство & APIКонфигурацияРежим браузераРасширенный API
3.2.0
2.1.9
1.6.1
0.34.6

Русский

English
简体中文
繁體中文
Español
Français
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
čeština
magyar

Русский

English
简体中文
繁體中文
Español
Français
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
čeština
magyar

Внешний вид

Sidebar Navigation

Введение

Почему Vitest

Начало работы

Возможности

Настройка Vitest

API

Справочник по API тестирования

Мок-функции

Vi

expect

expectTypeOf

assert

assertType

Руководство

Интерфейс командной строки

Фильтрация тестов

Тестовые проекты

Средства отчётности

Покрытие кода

Снапшот-тестирование

Мокирование

Параллелизм

Тестирование типов

Vitest UI

Тестирование в исходном коде

Контекст теста

Аннотации тестов

Среда тестирования

Расширение матчеров

Интеграции с IDE

Отладка

Распространенные ошибки

Руководство по миграции

Миграция на Vitest 3.0

Миграция с Jest

Производительность

Профилирование производительности тестов

Улучшение производительности

Режим браузера

Расширенный API

Сравнение с другими тестовыми раннерами

Содержание страницы

Тестирование в исходном коде ​

Vitest предоставляет возможность запускать тесты непосредственно в вашем исходном коде, рядом с реализацией, аналогично модульным тестам Rust.

Это позволяет тестам использовать то же замыкание, что и реализации, и тестировать приватные состояния без их экспорта. При этом обеспечивается более короткий цикл обратной связи в процессе разработки.

WARNING

Это руководство объясняет, как писать тесты внутри вашего исходного кода. Если вам нужно писать тесты в отдельных файлах, следуйте руководству "Написание тестов".

Настройка ​

Для начала поместите блок if (import.meta.vitest) в конец вашего исходного файла и напишите внутри него тесты. Например:

ts
// реализация
export function add(...args: number[]) {
  return args.reduce((a, b) => a + b, 0);
}

// встроенные наборы тестов
if (import.meta.vitest) {
  const { it, expect } = import.meta.vitest;
  it('add', () => {
    expect(add()).toBe(0);
    expect(add(1)).toBe(1);
    expect(add(1, 2, 3)).toBe(6);
  });
}

Обновите конфигурацию includeSource для Vitest, чтобы он включал файлы из src/:

ts
import { defineConfig } from 'vitest/config';

export default defineConfig({
  test: {
    includeSource: ['src/**/*.{js,ts}'], 
  },
});

Затем вы можете начать тестирование!

bash
$ npx vitest

Продуктовая сборка ​

Для продуктовой сборки вам потребуется настроить опции define в вашем файле конфигурации, чтобы сборщик мог удалить неиспользуемый код. Например, в Vite:

ts
/// <reference types="vitest/config" />

import { defineConfig } from 'vite'

export default defineConfig({
  test: {
    includeSource: ['src/**/*.{js,ts}'],
  },
  define: { 
    'import.meta.vitest': 'undefined', 
  }, 
})

Другие сборщики ​

unbuild
ts
import { defineBuildConfig } from 'unbuild'

export default defineBuildConfig({
  replace: { 
    'import.meta.vitest': 'undefined', 
  }, 
  // other options
})

Узнать больше: unbuild

Rollup
ts
import replace from '@rollup/plugin-replace'

export default {
  plugins: [
    replace({ 
      'import.meta.vitest': 'undefined', 
    }) 
  ],
  // other options
}

Узнать больше: Rollup

TypeScript ​

Чтобы получить поддержку TypeScript для import.meta.vitest, добавьте vitest/importMeta в ваш tsconfig.json:

json
{
  "compilerOptions": {
    "types": [
      "vitest/importMeta"
    ]
  }
}

Полный пример можно найти в examples/in-source-test.

Примечания ​

Эта функция может быть полезна для:

  • Модульного тестирования небольших функций или утилит
  • Прототипирования
  • Встроенных проверок

Рекомендуется использовать отдельные файлы тестов для более сложных тестов, например, для компонентов или сквозного тестирования (E2E).

Pager
Предыдущая страницаVitest UI
Следующая страницаКонтекст теста

Выпущено на условиях лицензии MIT.

Авторские права (c) 2021-Present Vitest Team

https://vitest.dev/guide/in-source

Выпущено на условиях лицензии MIT.

Авторские права (c) 2021-Present Vitest Team