Skip to content
Vitest 2
Main Navigation РуководствоAPIКонфигурацияРежим браузераПродвинутый
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 UI

In-source тестирование (Тестирование в исходном коде)

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

Тестовая среда

Расширение проверок (matchers)

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

Отладка

Сравнения с другими тестовыми фреймворками

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

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

Profiling Test Performance

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

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

In-source тестирование (Тестирование в исходном коде) ​

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

Это позволяет тестам использовать то же лексическое окружение, что и реализация, и тестировать закрытые состояния без необходимости их экспорта. Кроме того, это обеспечивает более быструю обратную связь в процессе разработки.

WARNING

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

Настройка ​

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

ts
// src/index.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
// vitest.config.ts
import { defineConfig } from 'vitest/config';

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

Теперь можно начинать тестирование!

bash
$ npx vitest

Production build (Сборка для production) ​

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

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

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

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

unbuild
ts
// build.config.ts
import { defineBuildConfig } from 'unbuild';

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

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

rollup
ts
// rollup.config.js
import replace from '@rollup/plugin-replace'; 

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

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

TypeScript ​

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

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

Обратитесь к examples/in-source-test для получения полного примера.

Заметки ​

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

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

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

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

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

Авторские права (c) 2024 Mithril Contributors

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

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

Авторские права (c) 2024 Mithril Contributors