Skip to content
Vitest 3
Main Navigation Przewodnik & APIKonfiguracjaTryb przeglądarkiZaawansowane API
3.2.0
2.1.9
1.6.1
0.34.6

Polski

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

Polski

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

Wygląd

Sidebar Navigation

Wprowadzenie

Dlaczego Vitest

Pierwsze kroki

Funkcje

Konfiguracja Vitest

API

Dokumentacja API testowego

Funkcje Mock

Vi

expect

expectTypeOf

assert

assertType

Przewodnik

Interfejs Wiersza Poleceń

Filtrowanie testów

Projekty testowe

Reportery

Pokrycie kodu

Migawki

Mockowanie

Równoległość

Typy testów

Interfejs użytkownika Vitest

Testy w kodzie źródłowym

Kontekst Testu

Adnotacje testowe

Środowisko testowe

Rozszerzanie matcherów

Integracje z IDE

Debugowanie

Typowe błędy

Przewodnik migracji

Migracja do Vitest 3.0

Migracja z Jest

Wydajność

Profilowanie wydajności testów

Poprawa wydajności

Tryb przeglądarkowy

Zaawansowane API

Porównania z innymi narzędziami do uruchamiania testów

Na tej stronie

Testy w kodzie źródłowym ​

Vitest umożliwia uruchamianie testów bezpośrednio w plikach źródłowych, obok implementacji, podobnie jak testy modułów w Ruście.

Takie podejście pozwala testom współdzielić to samo domknięcie co implementacje, umożliwiając testowanie prywatnych stanów bez konieczności ich eksportowania. Dodatkowo, zapewnia to krótszy cykl sprzężenia zwrotnego podczas procesu rozwoju.

WARNING

Ten przewodnik wyjaśnia, jak pisać testy bezpośrednio w kodzie źródłowym. Jeśli potrzebujesz pisać testy w oddzielnych plikach testowych, zapoznaj się z przewodnikiem "Pisanie testów".

Konfiguracja ​

Aby rozpocząć, umieść blok if (import.meta.vitest) na końcu pliku źródłowego i napisz w nim swoje testy. Przykład:

ts
// implementacja
export function add(...args: number[]) {
  return args.reduce((a, b) => a + b, 0);
}

// testy w kodzie źródłowym
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);
  });
}

Zaktualizuj konfigurację includeSource dla Vitest, aby uwzględnić pliki z katalogu src/:

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

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

Teraz możesz rozpocząć testowanie!

bash
$ npx vitest

Kompilacja produkcyjna ​

W przypadku kompilacji produkcyjnej, musisz skonfigurować opcje define w pliku konfiguracyjnym, aby bundler mógł przeprowadzić eliminację martwego kodu (dead code elimination). Na przykład, w Vite:

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

import { defineConfig } from 'vite'

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

Inne bundlery ​

unbuild
ts
import { defineBuildConfig } from 'unbuild'

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

Więcej informacji: unbuild

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

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

Więcej informacji: Rollup

TypeScript ​

Aby uzyskać wsparcie TypeScript dla import.meta.vitest, dodaj vitest/importMeta do swojego pliku tsconfig.json:

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

Pełny przykład znajdziesz w examples/in-source-test.

Uwagi ​

Ta funkcja może być przydatna do:

  • Testowania jednostkowego funkcji lub narzędzi o niewielkim zakresie.
  • Prototypowania.
  • Asercji inline.

Zaleca się używanie oddzielnych plików testowych dla bardziej złożonych testów, takich jak testy komponentów lub testy E2E.

Pager
Poprzednia stronaInterfejs użytkownika Vitest
Następna stronaKontekst Testu

Opublikowano na licencji MIT.

Copyright (c) 2021-Present Vitest Team

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

Opublikowano na licencji MIT.

Copyright (c) 2021-Present Vitest Team