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

API

Node API

Zaawansowane API

Vitest API

TestProject

TestSpecification

Test Task API

TestCase

TestSuite

TestModule

TestCollection

API wtyczek

API modułu uruchamiającego

Reportery

Metadane zadań

Przewodnik

Uruchamianie testów

Rozszerzanie Reporterów

Niestandardowa pula

Konfiguracja Vitest

Dokumentacja API testowego

Na tej stronie

Uruchamianie testów ​

WARNING

Ten przewodnik wyjaśnia, jak używać zaawansowanego API do uruchamiania testów za pośrednictwem skryptu Node.js. Jeśli chcesz po prostu uruchomić testy, prawdopodobnie nie potrzebujesz tego. Jest to używane głównie przez autorów bibliotek.

Zmiany wprowadzające niezgodność mogą nie być zgodne z SemVer. Zaleca się zablokowanie wersji Vitest podczas korzystania z eksperymentalnego API.

Vitest udostępnia dwie metody inicjalizacji:

  • startVitest inicjuje Vitest, weryfikuje instalację pakietów i natychmiast uruchamia testy.
  • createVitest jedynie inicjuje Vitest, nie uruchamiając żadnych testów.

startVitest ​

ts
import { startVitest } from 'vitest/node';

const vitest = await startVitest(
  'test',
  [], // Filtry CLI (wiersza poleceń)
  {}, // nadpisanie konfiguracji testu
  {}, // nadpisanie konfiguracji Vite
  {} // własne opcje Vitest
);
const testModules = vitest.state.getTestModules();
for (const testModule of testModules) {
  console.log(testModule.moduleId, testModule.ok() ? 'passed' : 'failed');
}

TIP

API TestModule, TestSuite i TestCase nie są eksperymentalne i są zgodne z SemVer od Vitest 2.1.

createVitest ​

Tworzy instancję Vitest bez uruchamiania testów.

Metoda createVitest nie weryfikuje, czy wymagane pakiety są zainstalowane. Nie obsługuje również config.standalone ani config.mergeReports. Vitest nie zostanie samoczynnie zamknięty, nawet jeśli tryb obserwacji (watch) jest wyłączony.

ts
import { createVitest } from 'vitest/node';

const vitest = await createVitest(
  'test',
  {}, // nadpisanie konfiguracji testu
  {}, // nadpisanie konfiguracji Vite
  {} // własne opcje Vitest
);

// wywoływane, gdy zostanie wywołane `vitest.cancelCurrentRun()`
vitest.onCancel(() => {});
// wywoływane podczas wywoływania `vitest.close()`
vitest.onClose(() => {});
// wywoływane, gdy Vitest ponownie uruchamia pliki testowe
vitest.onTestsRerun(files => {});

try {
  // to ustawi process.exitCode na 1, jeśli testy zakończą się niepowodzeniem,
  // i nie zamknie automatycznie procesu
  await vitest.start(['my-filter']);
} catch (err) {
  // to może zgłosić błąd
  // „FilesNotFoundError”, jeśli nie znaleziono plików
  // „GitNotFoundError” z `--changed`, jeśli repozytorium nie jest zainicjowane
} finally {
  await vitest.close();
}

Jeśli planujesz zachować instancję Vitest, upewnij się, że przynajmniej wywołasz init. Spowoduje to zainicjowanie modułów raportujących i dostawcy pokrycia kodu, ale nie uruchomi żadnych testów. Zaleca się również włączenie trybu watch, nawet jeśli nie planujesz korzystać z obserwatora Vitest, ale chcesz, aby instancja działała. Vitest wykorzystuje tę flagę, aby niektóre z jego funkcji działały poprawnie w ciągłym procesie.

Po zainicjowaniu modułów raportujących, użyj runTestSpecifications lub rerunTestSpecifications, aby uruchomić testy, jeśli wymagane jest uruchomienie ręczne:

ts
watcher.on('change', async file => {
  const specifications = vitest.getModuleSpecifications(file);
  if (specifications.length) {
    vitest.invalidateFile(file);
    // możesz użyć runTestSpecifications, jeśli punkty zaczepienia "reporter.onWatcher*"
    // nie powinny być wywoływane
    await vitest.rerunTestSpecifications(specifications);
  }
});

WARNING

Powyższy przykład przedstawia potencjalny przypadek użycia, jeśli wyłączysz domyślne zachowanie obserwatora. Domyślnie Vitest już ponownie uruchamia testy, jeśli pliki się zmieniają.

Należy również zauważyć, że getModuleSpecifications nie znajdzie plików testowych, chyba że zostały już przetworzone przez globTestSpecifications. Jeśli plik został właśnie utworzony, użyj w zamian project.matchesGlobPattern:

ts
watcher.on('add', async file => {
  const specifications = [];
  for (const project of vitest.projects) {
    if (project.matchesGlobPattern(file)) {
      specifications.push(project.createSpecification(file));
    }
  }

  if (specifications.length) {
    await vitest.rerunTestSpecifications(specifications);
  }
});

W sytuacjach, gdy trzeba wyłączyć obserwatora, możesz przekazać do konfiguracji Vite opcję server.watch: null (dostępną od Vite 5.3) lub server.watch: { ignored: ['*/*'] }:

ts
await createVitest(
  'test',
  {},
  {
    plugins: [
      {
        name: 'stop-watcher',
        async configureServer(server) {
          await server.watcher.close();
        },
      },
    ],
    server: {
      watch: null,
    },
  }
);
Pager
Poprzednia stronaMetadane zadań
Następna stronaRozszerzanie Reporterów

Opublikowano na licencji MIT.

Copyright (c) 2021-Present Vitest Team

https://vitest.dev/advanced/guide/tests

Opublikowano na licencji MIT.

Copyright (c) 2021-Present Vitest Team