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

Görev Meta Verileri ​

WARNING

Vitest deneysel bir özel API sunmaktadır. Yıkıcı değişiklikler SemVer kurallarına uymayabilir, lütfen kullanırken Vitest'in sürümünü sabitleyin.

Özel bir raporlayıcı geliştiriyorsanız veya Vitest Node.js API'sini kullanıyorsanız, farklı bağlamlarda çalıştırılan testlerden raporlayıcınıza veya özel Vitest işleyicinize veri aktarmanın faydalı olabileceğini görebilirsiniz.

Bunun için, test bağlamına güvenmek mümkün değildir, çünkü bu bağlam serileştirilemez. Ancak Vitest ile, testleriniz ve Node.js süreci arasında veri paylaşmak için her görevde (süit veya test) mevcut olan meta özelliğini kullanabilirsiniz. Bu iletişimin tek yönlü olduğunu unutmamak önemlidir, zira meta özelliği yalnızca test bağlamından değiştirilebilir. Node.js tarafında yapılan herhangi bir değişiklik testlerinizde görünmeyecektir.

meta özelliğini test bağlamında veya süit görevleri için beforeAll/afterAll kancalarında doldurabilirsiniz.

ts
afterAll(suite => {
  suite.meta.done = true;
});

test('custom', ({ task }) => {
  task.meta.custom = 'some-custom-handler';
});

Test tamamlandığında, Vitest, sonuç ve meta içeren bir görevi RPC aracılığıyla Node.js sürecine gönderecek ve ardından onTestCaseResult ve görevlere erişimi olan diğer kancalarda raporlayacaktır. Bu test senaryosunu işlemek için, raporlayıcı uygulamanızda bulunan onTestCaseResult yöntemini kullanabilirsiniz:

ts
import type { Reporter, TestCase, TestModule } from 'vitest/node';

export default {
  onTestCaseResult(testCase: TestCase) {
    // custom === 'some-custom-handler' ✅
    const { custom } = testCase.meta();
  },
  onTestRunEnd(testModule: TestModule) {
    testModule.meta().done === true;
    testModule.children.at(0).meta().custom === 'some-custom-handler';
  },
} satisfies Reporter;

DİKKAT

Vitest, Node.js süreciyle iletişim kurmak için farklı yöntemler kullanır.

  • Vitest, worker thread'leri içinde testleri çalıştırırsa, verileri mesaj portu aracılığıyla gönderecektir.
  • Vitest, child process kullanıyorsa, veriler process.send API aracılığıyla serileştirilmiş bir Buffer olarak gönderilecektir.
  • Vitest, tarayıcıda testleri çalıştırırsa, veriler flatted paketi kullanılarak stringleştirilecektir.

Bu özellik, json raporlayıcısındaki her testte de mevcuttur, bu nedenle verilerin JSON'a serileştirilebildiğinden emin olun.

Ayrıca, Hata özelliklerini ayarlamadan önce serileştirdiğinizden emin olun.

Testler tamamlandığında bu bilgiyi Vitest durumundan da alabilirsiniz:

ts
const vitest = await createVitest('test');
const { testModules } = await vitest.start();

const testModule = testModules[0];
testModule.meta().done === true;
testModule.children.at(0).meta().custom === 'some-custom-handler';

TypeScript kullanırken tür tanımlarını genişletmek de mümkündür:

ts
declare module 'vitest' {
  interface TaskMeta {
    done?: boolean;
    custom?: string;
  }
}
Pager
Önceki sayfaRaporlayıcılar
Sonraki sayfaTestleri Çalıştırma

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

Copyright (c) 2021-Present Vitest Team

https://vitest.dev/advanced/metadata

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

Copyright (c) 2021-Present Vitest Team