Skip to content
Vitest 3
Main Navigation Kılavuz & APIYapılandırmaTarayıcı ModuGelişmiş API
3.2.0
2.1.9
1.6.1
0.34.6

Türkçe

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

Türkçe

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

Görünüm

Sidebar Navigation

API

Node API

Gelişmiş API

Vitest API

Test Projesi

TestSpecification

Test Task API

TestCase

TestSuite

TestModule

TestCollection

Eklenti API'si

Çalıştırıcı API'si

Raporlayıcılar

Görev Meta Verileri

Kılavuz

Testleri Çalıştırma

Raporlayıcıları Genişletme

Özel Havuz

Vitest'i Yapılandırma

Test API Referansları

Bu sayfada

Testleri Çalıştırma ​

WARNING

Bu kılavuz, bir Node.js betiği aracılığıyla testleri çalıştırmak için gelişmiş API'nin nasıl kullanılacağını açıklar. Yalnızca testleri çalıştırmak istiyorsanız, muhtemelen buna ihtiyacınız yoktur. Bu API özellikle kütüphane yazarları tarafından kullanılır.

Deneysel API'yi kullanırken Vitest'in sürümünü sabitlemenizi öneririz, çünkü yıkıcı değişiklikler SemVer'i takip etmeyebilir.

Vitest'i başlatmak için iki yöntem sunulur:

  • startVitest: Vitest'i başlatır, gerekli paketlerin yüklü olduğunu doğrular ve testleri hemen çalıştırır.
  • createVitest: Sadece Vitest'i başlatır ve herhangi bir test çalıştırmaz.

startVitest ​

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

const vitest = await startVitest(
  'test',
  [], // CLI filtreleri
  {}, // Test yapılandırmasını geçersiz kılma
  {}, // Vite yapılandırmasını geçersiz kılma
  {} // Özel Vitest seçenekleri
);
const testModules = vitest.state.getTestModules();
for (const testModule of testModules) {
  console.log(testModule.moduleId, testModule.ok() ? 'geçti' : 'başarısız oldu');
}

TIP

TestModule, TestSuite ve TestCase API'leri deneysel değildir ve Vitest 2.1'den beri SemVer'i takip eder.

createVitest ​

Testleri çalıştırmadan bir Vitest örneği oluşturur.

createVitest yöntemi, gerekli paketlerin yüklü olduğunu doğrulamaz. Ayrıca config.standalone veya config.mergeReports ayarlarını dikkate almaz. watch modu devre dışı bırakılsa bile Vitest otomatik olarak kapanmaz.

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

const vitest = await createVitest(
  'test',
  {}, // Test yapılandırmasını geçersiz kılma
  {}, // Vite yapılandırmasını geçersiz kılma
  {} // Özel Vitest seçenekleri
);

// `vitest.cancelCurrentRun()` çağrıldığında tetiklenir
vitest.onCancel(() => {});
// `vitest.close()` çağrısı sırasında tetiklenir
vitest.onClose(() => {});
// Vitest test dosyalarını yeniden çalıştırdığında tetiklenir
vitest.onTestsRerun(files => {});

try {
  // Bu, testler başarısız olursa process.exitCode'yi 1 olarak ayarlayacak,
  // ancak süreci otomatik olarak kapatmayacaktır.
  await vitest.start(['my-filter']);
} catch (err) {
  // Bu bir hata döndürebilir:
  // - Dosya bulunamazsa "FilesNotFoundError"
  // - `--changed` ile ve depo başlatılmamışsa "GitNotFoundError"
} finally {
  await vitest.close();
}

Bir Vitest örneğini tutmayı düşünüyorsanız, en azından init çağrısını yaptığınızdan emin olun. Bu, raporlayıcıları ve kapsama sağlayıcısını başlatacak, ancak test çalıştırmayacaktır. Vitest izleyicisini kullanmayı düşünmeseniz bile, örneği çalışır durumda tutmak için watch modunu etkinleştirmeniz önerilir. Vitest, bazı özelliklerinin sürekli bir süreçte doğru şekilde çalışması için bu bayrağa ihtiyaç duyar.

Raporlayıcılar başlatıldıktan sonra, manuel çalıştırma gerektiğinde testleri çalıştırmak için runTestSpecifications veya rerunTestSpecifications kullanın:

ts
watcher.on('change', async file => {
  const specifications = vitest.getModuleSpecifications(file);
  if (specifications.length) {
    vitest.invalidateFile(file);
    // "reporter.onWatcher*" kancalarının çağrılmaması gerekiyorsa
    // runTestSpecifications kullanabilirsiniz.
    await vitest.rerunTestSpecifications(specifications);
  }
});

WARNING

Bu örnek, varsayılan izleyici davranışını devre dışı bırakmanız durumunda olası bir kullanım senaryosunu gösterir. Varsayılan olarak, Vitest dosyalar değişirse testleri zaten yeniden çalıştırır.

Ayrıca, getModuleSpecifications'ın test dosyalarını, globTestSpecifications tarafından zaten işlenmedikçe çözümlemeyeceğini unutmayın. Dosya yeni oluşturulduysa, bunun yerine project.matchesGlobPattern kullanın:

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);
  }
});

İzleyiciyi devre dışı bırakmanız gereken durumlarda, Vite 5.3'ten beri server.watch: null veya bir Vite yapılandırmasına server.watch: { ignored: ['*/*'] } geçirebilirsiniz:

ts
await createVitest(
  'test',
  {},
  {
    plugins: [
      {
        name: 'stop-watcher',
        async configureServer(server) {
          await server.watcher.close();
        },
      },
    ],
    server: {
      watch: null,
    },
  }
);
Pager
Önceki sayfaGörev Meta Verileri
Sonraki sayfaRaporlayıcıları Genişletme

MIT Lisansı altında yayınlanmıştır.

Copyright (c) 2021-Present Vitest Team

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

MIT Lisansı altında yayınlanmıştır.

Copyright (c) 2021-Present Vitest Team