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

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

WARNING

Bu gelişmiş bir API'dir. Sadece testleri çalıştırmak istiyorsanız, buna ihtiyacınız olmayabilir. Genellikle kütüphane geliştiricileri tarafından kullanılır.

Yapılandırma dosyanızdaki runner seçeneği ile test çalıştırıcınızın yolunu belirtebilirsiniz. Bu dosya, aşağıdaki yöntemleri uygulayan bir sınıf ile varsayılan bir dışa aktarıma sahip olmalıdır:

ts
export interface VitestRunner {
  /**
   * Testleri toplamadan ve çalıştırmadan önce çağrılan ilk şeydir.
   */
  onBeforeCollect?: (paths: string[]) => unknown;
  /**
   * Testleri topladıktan ve "onBeforeRun"dan önce çağrılır.
   */
  onCollected?: (files: File[]) => unknown;

  /**
   * Test çalıştırıcısının sonraki test çalıştırmalarını iptal etmesi gerektiğinde çağrılır.
   * Çalıştırıcı bu metodu dinlemeli ve "onBeforeRunSuite" ve
   * "onBeforeRunTask" içinde çağrıldığında testleri ve test gruplarını atlanmış olarak işaretlemelidir.
   */
  onCancel?: (reason: CancelReason) => unknown;

  /**
   * Tek bir testi çalıştırmadan önce çağrılır. Henüz sonuç yoktur.
   */
  onBeforeRunTask?: (test: TaskPopulated) => unknown;
  /**
   * Test fonksiyonunu gerçekten çalıştırmadan önce çağrılır. Zaten durum ve başlangıç zamanı ile birlikte sonuç mevcuttur.
   */
  onBeforeTryTask?: (
    test: TaskPopulated,
    options: { retry: number; repeats: number }
  ) => unknown;
  /**
   * Sonuç ve durum ayarlandıktan sonra çağrılır.
   */
  onAfterRunTask?: (test: TaskPopulated) => unknown;
  /**
   * Test fonksiyonunu çalıştırdıktan hemen sonra çağrılır. Henüz yeni durum yoktur. Test fonksiyonu hata verirse çağrılmaz.
   */
  onAfterTryTask?: (
    test: TaskPopulated,
    options: { retry: number; repeats: number }
  ) => unknown;

  /**
   * Tek bir test paketini çalıştırmadan önce çağrılır. Henüz sonuç yoktur.
   */
  onBeforeRunSuite?: (suite: Suite) => unknown;
  /**
   * Tek bir test paketini çalıştırdıktan sonra çağrılır. Durum ve sonuç mevcuttur.
   */
  onAfterRunSuite?: (suite: Suite) => unknown;

  /**
   * Tanımlanmışsa, normal Vitest test grubu bölümlemesi ve işlemesi yerine çağrılır.
   * "before" ve "after" kancaları dikkate alınacaktır.
   */
  runSuite?: (suite: Suite) => Promise<void>;
  /**
   * Tanımlanmışsa, normal Vitest işlemesi yerine çağrılır. Özel test fonksiyonunuz varsa kullanışlıdır.
   * "before" ve "after" kancaları dikkate alınacaktır.
   */
  runTask?: (test: TaskPopulated) => Promise<void>;

  /**
   * Bir görev güncellendiğinde çağrılır. Bir rapordaki onTaskUpdate ile aynıdır; ancak bu, testlerle eş zamanlı olarak çalışır.
   */
  onTaskUpdate?: (task: [string, TaskResult | undefined][]) => Promise<void>;

  /**
   * Toplanan yollardaki tüm testleri çalıştırmadan önce çağrılır.
   */
  onBeforeRunFiles?: (files: File[]) => unknown;
  /**
   * Toplanan yollardaki tüm testleri çalıştırdıktan hemen sonra çağrılır.
   */
  onAfterRunFiles?: (files: File[]) => unknown;
  /**
   * Bir test için yeni bağlam tanımlandığında çağrılır. Bağlama özel nitelikler eklemek isterseniz kullanışlıdır.
   * Eğer bir çalıştırıcı ile yalnızca özel bağlam tanımlamak istiyorsanız, bunun yerine "setupFiles" içinde "beforeAll" kullanmayı düşünebilirsiniz.
   *
   * Bu yöntem hem "test" hem de "custom" işleyicileri için çağrılır.
   *
   * @see https://www.getbook.com/tr/book/vitest-1/advanced/runner#your-task-function
   */
  extendTaskContext?: <T extends Test | Custom>(
    context: TaskContext<T>
  ) => TaskContext<T>;
  /**
   * Belirli dosyalar içe aktarıldığında çağrılır. İki durumda çağrılabilir: testleri toplarken ve kurulum dosyalarını içe aktarırken.
   */
  importFile: (filepath: string, source: VitestRunnerImportSource) => unknown;
  /**
   * Herkese açık yapılandırma.
   */
  config: VitestRunnerConfig;
}

Bu sınıfı başlatırken, Vitest yapılandırması aktarılır - bunu bir config özelliği olarak belirtmelisiniz.

WARNING

Vitest ayrıca ViteNodeRunner örneğini __vitest_executor özelliği olarak ekler. importFile metodunda dosyaları işlemek için kullanabilirsiniz (bu, TestRunner ve BenchmarkRunnerın varsayılan davranışıdır).

ViteNodeRunner, test dosyalarını Vite uyumlu bir ortamda içe aktarmak için kullanılan executeId metodunu sunar. Yani, içe aktarmaları çözümleyip dosya içeriğini çalışma anında dönüştürerek Node'un anlamasını sağlar.

TIP

Anlık görüntü desteği ve diğer bazı özellikler çalıştırıcıya bağlıdır. Kaybetmek istemiyorsanız, çalıştırıcınızı vitest/runnersdan içe aktarılan VitestTestRunnerdan genişletebilirsiniz. Ayrıca, kıyaslama işlevselliğini genişletmek istiyorsanız BenchmarkNodeRunnerı da kullanabilirsiniz.

Görev Fonksiyonunuz ​

Vitest görev sistemini görevlerinizle genişletebilirsiniz. Bir görev, bir test paketinin parçası olan bir nesnedir. suite.task metoduyla otomatik olarak geçerli pakete eklenir:

js
// ./utils/custom.js
import { createTaskCollector, getCurrentSuite, setFn } from 'vitest/suite';

export { describe, beforeAll, afterAll } from 'vitest';

// bu işlev toplama aşamasında çağrılacaktır:
// burada işlev işleyicisini çağırmayın, "getCurrentSuite().task()" yöntemiyle onu süit görevlerine ekleyin
// not: createTaskCollector, "todo"/"each"/... için destek sağlar
export const myCustomTask = createTaskCollector(function (name, fn, timeout) {
  getCurrentSuite().task(name, {
    ...this, // so "todo"/"skip"/... is tracked correctly
    meta: {
      customPropertyToDifferentiateTask: true,
    },
    handler: fn,
    timeout,
  });
});
js
// ./garden/tasks.test.js
import { afterAll, beforeAll, describe, myCustomTask } from '../custom.js';
import { gardener } from './gardener.js';

describe('bahçe bakımı', () => {
  beforeAll(() => {
    gardener.putWorkingClothes();
  });

  myCustomTask('otları temizle', () => {
    gardener.weedTheGrass();
  });
  yCustomTask.todo('mow the lawn', () => {
    gardener.mowerTheLawn();
  });
  myCustomTask('çiçekleri sulamak', () => {
    gardener.waterFlowers();
  });

  afterAll(() => {
    gardener.goHome();
  });
});
bash
vitest ./garden/tasks.test.js

WARNING

Özel bir çalıştırıcınız yoksa veya runTest metodunu tanımlamadıysanız, Vitest bir görevi otomatik olarak almaya çalışacaktır. setFn ile bir fonksiyon eklemediyseniz, bu işlem başarısız olur.

TIP

Özel görev sistemi kancaları ve bağlamları desteklemektedir. Özellik zincirlemesini (örneğin only, skip ve özel olanlar) desteklemek isterseniz, vitest/suitedan createChainableı içe aktarabilir ve fonksiyonunuzu onunla sarabilirsiniz. Bunu yapmaya karar verirseniz, custom fonksiyonunu custom.call(this) şeklinde çağırmanız gerekir.

Pager
Önceki sayfaNode API
Sonraki sayfaGörev Meta Verileri

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

Copyright (c) 2024 Mithril Contributors

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

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

Copyright (c) 2024 Mithril Contributors