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

Raporlayıcılar ​

WARNING

Bu ileri düzey bir API'dir. Yalnızca yerleşik raporlayıcıları yapılandırmak istiyorsanız, "Raporlayıcılar" kılavuzunu okuyun.

Vitest'in kendine özgü bir test çalıştırma yaşam döngüsü vardır. Bu döngü, aşağıdaki raporlayıcı yöntemleriyle temsil edilir:

  • onInit
  • onTestRunStart
    • onTestModuleQueued
    • onTestModuleCollected
    • onTestModuleStart
      • onTestSuiteReady
        • onHookStart(beforeAll)
        • onHookEnd(beforeAll)
          • onTestCaseReady
            • onTestAnnotate 3.2.0+
            • onHookStart(beforeEach)
            • onHookEnd(beforeEach)
            • onHookStart(afterEach)
            • onHookEnd(afterEach)
          • onTestCaseResult
        • onHookStart(afterAll)
        • onHookEnd(afterAll)
      • onTestSuiteResult
    • onTestModuleEnd
  • onTestRunEnd

Tek bir modül içindeki testler ve süitler, atlanmadıkları sürece sırayla raporlanır. Atlanan tüm testler, süit/modülün sonunda raporlanır.

Test modülleri paralel olarak çalışabildiğinden, Vitest'in bunları da paralel olarak raporlayacağını unutmayın.

Bu rehber, desteklenen tüm raporlayıcı metotlarını listeler. Ancak, kendi raporlayıcınızı sıfırdan oluşturmak yerine, var olan bir raporlayıcıyı genişletebileceğinizi unutmayın:

ts
import { BaseReporter } from 'vitest/reporters';

export default class CustomReporter extends BaseReporter {
  onTestRunEnd(testModules, errors) {
    console.log(testModules.length, 'tests finished running');
    super.onTestRunEnd(testModules, errors);
  }
}

onInit ​

ts
function onInit(vitest: Vitest): Awaitable<void>;

Bu yöntem, Vitest başlatıldığında veya başladığında, ancak testler filtrelenmeden önce çağrılır.

INFO

Dahili olarak bu metot, vitest.start, vitest.init veya vitest.mergeReports içinde çağrılır. Programlama API'si kullanıyorsanız, örneğin vitest.runTestSpecifications çağırmadan önce ihtiyaçlarınıza göre bunlardan birini çağırdığınızdan emin olun. Dahili CLI her zaman metotları doğru sırada çalıştıracaktır.

vitest örneğine test durumlarından, süitlerden ve test modüllerinden bir project özelliği aracılığıyla da erişebileceğinizi, ancak bu metot içinde vitest'e bir referans saklamanın da yararlı olabileceğini unutmayın.

Örnek
ts
import type { Reporter, TestSpecification, Vitest } from 'vitest/node';

class MyReporter implements Reporter {
  private vitest!: Vitest;

  onInit(vitest: Vitest) {
    this.vitest = vitest;
  }

  onTestRunStart(specifications: TestSpecification[]) {
    console.log(
      specifications.length,
      'test files will run in',
      this.vitest.config.root
    );
  }
}

export default new MyReporter();

onBrowserInit deneysel ​

ts
function onBrowserInit(project: TestProject): Awaitable<void>;

Bu metot, tarayıcı örneği başlatıldığında çağrılır. Tarayıcının başlatıldığı projenin bir örneğini alır. Bu yöntem çağrıldığında project.browser her zaman tanımlı olacaktır.

onTestRunStart ​

ts
function onTestRunStart(specifications: TestSpecification[]): Awaitable<void>;

Bu yöntem, yeni bir test çalıştırması başladığında çağrılır. Çalıştırılması planlanan test spesifikasyonları dizisini alır. Bu dizi salt okunurdur ve sadece bilgi amaçlıdır.

Vitest çalıştırılacak herhangi bir test dosyası bulamazsa, bu olay boş bir dizi ile çağrılır ve ardından hemen onTestRunEnd çağrılır.

Örnek
ts
import type { Reporter, TestSpecification } from 'vitest/node';

class MyReporter implements Reporter {
  onTestRunStart(specifications: TestSpecification[]) {
    console.log(specifications.length, 'test files will run');
  }
}

export default new MyReporter();

KULLANIMDAN KALDIRMA BİLDİRİMİ

Bu yöntem Vitest 3'te eklendi ve artık kullanımdan kaldırılan onPathsCollected ve onSpecsCollected'in yerini aldı.

onTestRunEnd ​

ts
function onTestRunEnd(
  testModules: ReadonlyArray<TestModule>,
  unhandledErrors: ReadonlyArray<SerializedError>,
  reason: TestRunEndReason
): Awaitable<void>;

Bu yöntem, tüm testler çalışmayı bitirdikten ve kapsam, etkinleştirildiyse tüm raporları birleştirdikten sonra çağrılır. Kapsam bilgilerini onCoverage kancasında alabileceğinizi unutmayın.

Salt okunur bir test modülleri listesi alır. Durumu ve varsa hataları raporlamak için testModule.children özelliği aracılığıyla üzerinde yineleme yapabilirsiniz.

İkinci argüman, Vitest'in herhangi bir teste atfedemediği işlenmemiş hataların salt okunur bir listesidir. Bunlar, bir eklentideki bir hata nedeniyle test çalıştırmasının dışında veya test çalıştırması içinde, beklenmeyen bir fonksiyonun yan etkisi olarak (örneğin, test çalışmayı bitirdikten sonra bir hata fırlatan bir zaman aşımı) meydana gelebilir.

Üçüncü argüman, test çalıştırmasının neden bittiğini belirtir:

  • passed: test çalıştırması normal şekilde tamamlandı ve hata yok
  • failed: test çalıştırmasında en az bir hata var (toplama sırasında bir sözdizimi hatası veya test yürütme sırasında gerçek bir hata nedeniyle)
  • interrupted: test vitest.cancelCurrentRun çağrısı veya terminalde Ctrl+C tuşuna basılarak kesildi (bu durumda hala başarısız testlerin olabileceğini unutmayın)

Vitest çalıştırılacak herhangi bir test dosyası bulamazsa, bu olay boş modül ve hata dizileriyle çağrılır ve durum config.passWithNoTests değerine bağlı olacaktır.

Örnek
ts
import type {
  Reporter,
  SerializedError,
  TestModule,
  TestRunEndReason,
  TestSpecification,
} from 'vitest/node';

class MyReporter implements Reporter {
  onTestRunEnd(
    testModules: ReadonlyArray<TestModule>,
    unhandledErrors: ReadonlyArray<SerializedError>,
    reason: TestRunEndReason
  ) {
    if (reason === 'passed') {
      testModules.forEach(module => console.log(module.moduleId, 'succeeded'));
    } else if (reason === 'failed') {
      // bunun süitlerdeki olası hataları atlayacağını unutmayın
      // bunları testSuite.errors() adresinden alabilirsiniz
      for (const testCase of testModules.children.allTests()) {
        if (testCase.result().state === 'failed') {
          console.log(
            testCase.fullName,
            'in',
            testCase.module.moduleId,
            'failed'
          );
          console.log(testCase.result().errors);
        }
      }
    } else {
      console.log('test run was interrupted, skipping report');
    }
  }
}

export default new MyReporter();

KULLANIMDAN KALDIRMA BİLDİRİMİ

Bu yöntem Vitest 3'te eklendi ve artık kullanımdan kaldırılan onFinished'in yerini aldı.

onCoverage ​

ts
function onCoverage(coverage: unknown): Awaitable<void>;

Bu kanca, kapsam sonuçları işlendikten sonra çağrılır. Kapsam sağlayıcısının raporlayıcıları bu kancadan sonra çağrılır. coverage'ın türleri coverage.provider'a bağlıdır. Vitest'in varsayılan yerleşik sağlayıcıları için türleri istanbul-lib-coverage paketinden içe aktarabilirsiniz:

ts
import type { CoverageMap } from 'istanbul-lib-coverage';

declare function onCoverage(coverage: CoverageMap): Awaitable<void>;

Vitest herhangi bir kapsam gerçekleştirmediyse, bu kanca çağrılmaz.

onTestModuleQueued ​

ts
function onTestModuleQueued(testModule: TestModule): Awaitable<void>;

Bu yöntem, Vitest kurulum dosyasını ve test modülünün kendisini içe aktarmadan hemen önce çağrılır. Bu, testModule'ün henüz children içermeyeceği, ancak onu çalıştırılacak bir sonraki test olarak raporlamaya başlayabileceğiniz anlamına gelir.

onTestModuleCollected ​

ts
function onTestModuleCollected(testModule: TestModule): Awaitable<void>;

Bu yöntem, dosya içindeki tüm testler toplandığında çağrılır, yani testModule.children koleksiyonu doldurulur, ancak testlerin henüz herhangi bir sonucu yoktur.

onTestModuleStart ​

ts
function onTestModuleStart(testModule: TestModule): Awaitable<void>;

Bu yöntem, onTestModuleCollected hemen sonra çağrılır. Vitest toplama modunda çalışmadığı sürece (vitest.collect() veya CLI'da vitest collect), bu durumda çalıştırılacak test olmadığı için hiç çağrılmaz.

onTestModuleEnd ​

ts
function onTestModuleEnd(testModule: TestModule): Awaitable<void>;

Bu yöntem, modüldeki her test çalışmayı bitirdiğinde çağrılır. Bu, testModule.children içindeki her testin pending'e eşit olmayan bir test.result()'e sahip olacağı anlamına gelir.

onHookStart ​

ts
function onHookStart(context: ReportedHookContext): Awaitable<void>;

Bu yöntem, aşağıdaki kancalardan herhangi biri çalışmaya başladığında çağrılır:

  • beforeAll
  • afterAll
  • beforeEach
  • afterEach

beforeAll veya afterAll başlatılırsa, entity ya TestSuite ya da TestModule olacaktır.

beforeEach veya afterEach başlatılırsa, entity her zaman TestCase olacaktır.

WARNING

onHookStart yöntemi, kanca test çalıştırması sırasında çalışmadıysa çağrılmaz.

onHookEnd ​

ts
function onHookEnd(context: ReportedHookContext): Awaitable<void>;

Bu yöntem, aşağıdaki kancalardan herhangi biri çalışmayı bitirdiğinde çağrılır:

  • beforeAll
  • afterAll
  • beforeEach
  • afterEach

beforeAll veya afterAll bittiyse, entity ya TestSuite ya da TestModule olacaktır.

beforeEach veya afterEach bittiyse, entity her zaman TestCase olacaktır.

WARNING

onHookEnd yöntemi, kanca test çalıştırması sırasında çalışmadıysa çağrılmaz.

onTestSuiteReady ​

ts
function onTestSuiteReady(testSuite: TestSuite): Awaitable<void>;

Bu yöntem, süit testlerini çalıştırmaya başlamadan önce çağrılır. Bu yöntem, süit atlandıysa da çağrılır.

Dosyada herhangi bir süit yoksa, bu yöntem çağrılmaz. Bu kullanım durumunu kapsamak amacıyla onTestModuleStart kullanmayı düşünün.

onTestSuiteResult ​

ts
function onTestSuiteResult(testSuite: TestSuite): Awaitable<void>;

Bu yöntem, süit testleri çalıştırmayı bitirdikten sonra çağrılır. Bu yöntem, süit atlandıysa da çağrılır.

Dosyada herhangi bir süit yoksa, bu yöntem çağrılmaz. Bu kullanım durumunu kapsamak amacıyla onTestModuleEnd kullanmayı düşünün.

onTestCaseReady ​

ts
function onTestCaseReady(testCase: TestCase): Awaitable<void>;

Bu yöntem, test çalışmaya başlamadan veya atlanmadan önce çağrılır. beforeEach ve afterEach kancalarının testin bir parçası olarak değerlendirildiğini unutmayın, çünkü sonucu etkileyebilirler.

WARNING

onTestCaseReady çağrıldığında testCase.result()'nin passed veya failed durumunda olabileceğini unutmayın. Bu, test çok hızlı çalışıyorsa ve hem onTestCaseReady hem de onTestCaseResult aynı mikro görevde çalışacak şekilde planlandıysa meydana gelebilir.

onTestCaseResult ​

ts
function onTestCaseResult(testCase: TestCase): Awaitable<void>;

Bu yöntem, test çalışması sona erdiğinde veya atlandığında çağrılır. Varsa, afterEach kancası bittikten sonra çağrılacağını unutmayın.

Bu noktada, testCase.result() beklemede olmayan bir duruma sahip olacaktır.

onTestAnnotate 3.2.0+ ​

ts
function onTestAnnotate(
  testCase: TestCase,
  annotation: TestAnnotation
): Awaitable<void>;

onTestAnnotate kancası context.annotate yöntemiyle ilişkilidir. annotate çağrıldığında, Vitest onu serileştirir ve aynı eki raporlayıcının onunla etkileşime girebileceği ana iş parçacığına gönderir.

Yol belirtilirse, Vitest onu ayrı bir dizinde saklar (attachmentsDir tarafından yapılandırılır) ve path özelliğini ona başvuracak şekilde değiştirir.

Pager
Önceki sayfaÇalıştırıcı API'si
Sonraki sayfaGörev Meta Verileri

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

Copyright (c) 2021-Present Vitest Team

https://vitest.dev/advanced/api/reporters

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

Copyright (c) 2021-Present Vitest Team