Skip to content
Vitest 2
Main Navigation PrzewodnikAPIKonfiguracjaTryb przeglądarkiZaawansowany
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

Dlaczego Vitest

Wprowadzenie

Funkcje

Przestrzeń robocza

Interfejs Linii Poleceń

Filtrowanie Testów

Reportery

Pokrycie kodu

Snapshot

Mockowanie

Testowanie typów

Interfejs użytkownika Vitest

Testowanie w kodzie źródłowym

Kontekst Testowy

Środowisko Testowe

Rozszerzanie Matcherów

Integracje z IDE

Debugowanie

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

Przewodnik migracji

Częste błędy

Profiling Test Performance

Poprawa wydajności

Na tej stronie

Testowanie w kodzie źródłowym ​

Vitest umożliwia uruchamianie testów bezpośrednio w kodzie źródłowym, obok implementacji, podobnie jak testy modułowe w Rust.

Dzięki temu testy współdzielą ten sam zakres (closure) co implementacja i mogą testować stany prywatne bez konieczności ich eksportowania. Dodatkowo, zapewnia to szybsze sprzężenie zwrotne podczas programowania.

WARNING

Ten przewodnik wyjaśnia, jak pisać testy wewnątrz kodu źródłowego. Jeśli potrzebujesz pisać testy w oddzielnych plikach testowych, postępuj zgodnie z przewodnikiem "Pisanie testów".

Konfiguracja ​

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

ts
// src/index.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 w Vitest, aby uwzględnić pliki w katalogu src/:

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

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

Teraz możesz uruchomić testy!

bash
$ npx vitest

Kompilacja produkcyjna ​

Podczas kompilacji produkcyjnej należy ustawić opcje define w pliku konfiguracyjnym, aby bundler mógł usunąć martwy kod (dead code elimination). Na przykład, w Vite:

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

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

Inne bundlery ​

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

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

Więcej informacji: unbuild

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

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

Więcej informacji: Rollup

TypeScript ​

Aby włączyć obsługę TypeScript dla import.meta.vitest, dodaj vitest/importMeta do pliku tsconfig.json:

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

Zobacz examples/in-source-test dla pełnego przykładu.

Uwagi ​

Ta funkcja może być przydatna do:

  • Testów jednostkowych funkcji lub narzędzi o wąskim zakresie
  • Tworzenia prototypów
  • Wbudowanych asercji

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

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

Opublikowano na licencji MIT.

Copyright (c) 2024 Mithril Contributors

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

Opublikowano na licencji MIT.

Copyright (c) 2024 Mithril Contributors