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

Özel Havuz ​

WARNING

Bu, gelişmiş ve düşük seviyeli bir API'dir. Yalnızca testleri çalıştırmak istiyorsanız, muhtemelen buna ihtiyacınız yoktur. Öncelikle kütüphane yazarları tarafından kullanılır.

Vitest, testleri havuzlarda çalıştırır. Varsayılan olarak birkaç havuz mevcuttur:

  • threads: Testleri node:worker_threads kullanarak çalıştırmak içindir (izolasyon yeni bir worker bağlamında sağlanır).
  • forks: Testleri node:child_process kullanarak çalıştırmak içindir (izolasyon yeni bir child_process.fork sürecinde sağlanır).
  • vmThreads: Testleri node:worker_threads kullanarak çalıştırmak içindir (ancak izolasyon yeni bir worker bağlamı yerine vm modülü ile sağlanır).
  • browser: Tarayıcı sağlayıcılarını kullanarak testleri çalıştırmak içindir.
  • typescript: Testlerde tip kontrolü yapmak içindir.

Kendi havuzunuzu bir dosya yolu belirterek tanımlayabilirsiniz:

ts
import { defineConfig } from 'vitest/config';

export default defineConfig({
  test: {
    // Varsayılan olarak her dosyayı özel bir havuzda çalıştırır
    pool: './my-custom-pool.ts',
    // `poolOptions` nesnesini kullanarak seçenekleri belirtebilirsiniz
    poolOptions: {
      myCustomPool: {
        customProperty: true,
      },
    },
  },
});

Testleri farklı havuzlarda çalıştırmanız gerekirse, projects özelliğini kullanın:

ts
export default defineConfig({
  test: {
    projects: [
      {
        extends: true,
        test: {
          pool: 'threads',
        },
      },
    ],
  },
});

API ​

pool seçeneğinde belirtilen dosya, ilk parametre olarak Vitest arayüzünü kabul eden bir fonksiyonu (eşzamansız olabilir) dışa aktarmalıdır. Bu fonksiyon, ProcessPool arayüzüne uygun bir nesne döndürmelidir:

ts
import type { ProcessPool, TestSpecification } from 'vitest/node';

export interface ProcessPool {
  name: string;
  runTests: (
    files: TestSpecification[],
    invalidates?: string[]
  ) => Promise<void>;
  collectTests: (
    files: TestSpecification[],
    invalidates?: string[]
  ) => Promise<void>;
  close?: () => Promise<void>;
}

Fonksiyon yalnızca bir kez çağrılır (sunucu yapılandırması güncellenmediği sürece). Genellikle testler için ihtiyacınız olan her şeyi bu fonksiyon içinde başlatmak ve runTests çağrıldığında yeniden kullanmak iyi bir yaklaşımdır.

Vitest, yeni testler çalıştırılmak üzere planlandığında runTests'i çağırır. files boşsa çağırmaz. İlk argüman, bir TestSpecifications dizisidir. Dosyalar, runTests çağrılmadan önce sequencer kullanılarak sıralanır. Aynı dosyanın iki kez bulunması mümkün olsa da (ancak olası değil), her zaman farklı bir projeye ait olacaktır. Bu durum, projects yapılandırması aracılığıyla uygulanır.

Vitest, bir çalıştırmayı tamamlamadan önce runTests'in yürütülmesini bekleyecektir (yani, runTests çözümlendikten sonra onFinished olayını yayınlayacaktır).

Özel bir havuz kullanıyorsanız, test dosyalarını ve sonuçlarını kendiniz sağlamanız gerekecektir. Bunun için vitest.state sayfasına başvurabilirsiniz (en önemlileri collectFiles ve updateTasks'tır). Vitest, bu işlem için @vitest/runner paketindeki startTests fonksiyonunu kullanır.

Vitest, vitest.collect çağrıldığında veya bir CLI komutu aracılığıyla vitest list çağrıldığında collectTests'i çağıracaktır. runTests ile aynı şekilde çalışır, ancak test geri çağırmalarını çalıştırmanıza gerek yoktur; yalnızca vitest.state.collectFiles(files) çağırarak görevlerini raporlamanız yeterlidir.

Farklı süreçler arasında iletişim kurmak için, vitest/node'dan createMethodsRPC kullanarak bir yöntem nesnesi oluşturabilir ve tercih ettiğiniz herhangi bir iletişim yöntemini kullanabilirsiniz. Örneğin, birpc ile WebSockets kullanmak için aşağıdaki gibi bir kod yazabilirsiniz:

ts
import { createBirpc } from 'birpc';
import { parse, stringify } from 'flatted';
import { createMethodsRPC, TestProject } from 'vitest/node';

function createRpc(project: TestProject, wss: WebSocketServer) {
  return createBirpc(createMethodsRPC(project), {
    post: msg => wss.send(msg),
    on: fn => wss.on('message', fn),
    serialize: stringify,
    deserialize: parse,
  });
}

Testleri çalıştırmayan ancak toplanmış olarak işaretleyen, sıfırdan oluşturulmuş basit bir havuz örneğini pool/custom-pool.ts adresinde görebilirsiniz.

Pager
Önceki sayfaRaporlayıcıları Genişletme
Sonraki sayfaVitest'i Yapılandırma

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

Copyright (c) 2021-Present Vitest Team

https://vitest.dev/advanced/pool

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

Copyright (c) 2021-Present Vitest Team