Skip to content
Vitest 1
Main Navigation KılavuzAPIYapılandırmaİleri
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

İleri

Node API

Test Çalıştırıcısı

Görev Meta Verileri

Raporlayıcıları Genişletme

Özel Havuz

Bu sayfada

Görev Meta Verileri ​

WARNING

Vitest, deneysel özel API'ler sunmaktadır. Uyumsuz değişiklikler sürüm takip kurallarına uymayabilir, bu nedenle kullanırken lütfen Vitest'in sürümünü belirtin.

Özel bir raporlayıcı geliştiriyorsanız veya Vitest Node.js API'sini kullanıyorsanız, çeşitli bağlamlarda yürütülen testlerden raporlayıcınıza veya özel Vitest işleyicinize veri aktarmak faydalı olabilir.

Bunu başarmak için test bağlamına güvenmek mümkün değildir; çünkü serileştirilemez bir yapıya sahiptir. Ancak Vitest ile, testleriniz ve Node.js süreci arasında veri paylaşmak için her görevde (test grubu veya test) bulunan meta özelliğini kullanabilirsiniz. Bu iletişimin yalnızca tek yönlü olduğunu unutmamak önemlidir; çünkü meta özelliği yalnızca test bağlamı içinden değiştirilebilir. Node.js bağlamında yapılan herhangi bir değişiklik testlerinizde görünmez.

meta özelliğini test bağlamında veya test grubu 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'
})

Bir test tamamlandıktan sonra, Vitest sonucu ve meta verilerini içeren görevi RPC ile Node.js sürecine gönderir. Bu görevi yakalamak ve işlemek için, raporlayıcı uygulamanızda bulunan onTaskUpdate yöntemini kullanabilirsiniz:

ts
// custom-reporter.js
export default {
  // İhtiyaç duyarsanız veri paketlerini yakalayabilirsiniz
  onTaskUpdate(packs) {
    const [id, result, meta] = packs[0]
  },
  // meta, "onFinished" içindeki her görevde bulunur
  onFinished(files) {
    files[0].meta.done === true
    files[0].tasks[0].meta.custom === 'some-custom-handler'
  }
}

WARNING

Kısa bir süre içinde birkaç test tamamlanırsa, Vitest aynı anda birden fazla test sonucu gönderebilir.

DİKKAT

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

  • Vitest, testleri worker thread'lerde çalıştırırsa, verileri mesaj portu aracılığıyla gönderir.
  • Vitest, child process kullanırsa, veriler process.send API'si aracılığıyla serileştirilmiş bir Buffer olarak gönderilir.
  • Vitest, testleri tarayıcıda çalıştırırsa, veriler flatted paketi kullanılarak metne dönüştürülür.

Genel kural olarak, fonksiyonlar, Promises, regexp ( v8.stringify bunu serileştiremez; ancak string versiyonunu gönderebilir ve Node.js sürecinde kendiniz ayrıştırabilirsiniz) ve diğer serileştirilemeyen veriler hariç neredeyse her şeyi gönderebilirsiniz. Döngüsel referanslar içerebilir.

Ayrıca, göndermeden önce Error özelliklerini serileştirdiğinizden emin olun.

Testler çalışmayı bitirdiğinde bu bilgiyi Vitest durumundan da alabilirsiniz:

ts
const vitest = await createVitest('test')
await vitest.start()
vitest.state.getFiles()[0].meta.done === true
vitest.state.getFiles()[0].tasks[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 sayfaTest Çalıştırıcısı
Sonraki sayfaRaporlayıcıları Genişletme

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

Copyright (c) 2024 Mithril Contributors

https://v1.vitest.dev/advanced/metadata

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

Copyright (c) 2024 Mithril Contributors