Skip to content
Vitest 2
Main Navigation KılavuzAPIYapılandırmaTarayıcı Moduİleri
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

Neden Vitest

Başlangıç

Özellikler

Çalışma Alanı

Komut Satırı Arayüzü

Test Filtreleme

Raporlayıcılar

Kapsam

Anlık Görüntü (Snapshot) Testleri

Sahtecilik (Mocking)

Türleri Test Etme

Vitest Arayüzü

Kaynak İçi Test

Test Bağlamı

Test Ortamı

Eşleştiricileri Genişletme

IDE Tümleştirmeleri

Hata Ayıklama

Diğer Test Çalıştırıcılarıyla Karşılaştırmalar

Geçiş Rehberi

Yaygın Hatalar

Profiling Test Performance

Performansı İyileştirme

Bu sayfada

Test Ortamı ​

Vitest, kodunuzu belirli bir ortamda çalıştırmak için environment seçeneğini sunar. Ortamın davranışını ise environmentOptions seçeneğiyle özelleştirebilirsiniz.

Varsayılan olarak aşağıdaki ortamları kullanabilirsiniz:

  • node: Varsayılan ortamdır.
  • jsdom: Tarayıcı API'lerini sağlayarak bir tarayıcı ortamını simüle eder ve jsdom paketini kullanır.
  • happy-dom: Tarayıcı API'lerini taklit ederek bir tarayıcı ortamı sağlar. jsdom'dan daha hızlı olduğu kabul edilir ancak bazı API'lerden yoksundur; happy-dom paketini kullanır.
  • edge-runtime: Vercel'in edge-runtime'ını simüle eder ve @edge-runtime/vm paketini kullanır.

INFO

jsdom veya happy-dom ortamları kullanıldığında, Vitest CSS ve varlıkları içe aktarırken Vite'ın kurallarını takip eder. Harici bağımlılıkları içe aktarma işlemi unknown extension .css hatasıyla başarısız olursa, tüm içe aktarma zincirini server.deps.external seçeneğine ekleyerek manuel olarak satır içine almanız gerekir. Örneğin, kaynak kodu -> package-1 -> package-2 -> package-3 şeklindeki bir içe aktarma zincirinde package-3 içinde hata oluşursa, her üç paketi de server.deps.external'a eklemeniz gerekir.

Vitest 2.0.4'ten itibaren, harici bağımlılıklar içindeki CSS ve varlıkların require işlemleri otomatik olarak çözülmektedir.

WARNING

Ortamlar yalnızca Node.js'de testler çalıştırılırken kullanılabilir.

browser, Vitest'te bir ortam olarak kabul edilmez. Testlerinizin bir kısmını Tarayıcı Modu kullanarak çalıştırmak isterseniz, bir çalışma alanı projesi oluşturabilirsiniz.

Belirli Dosyalar İçin Ortamlar ​

Yapılandırmanızda environment seçeneğini ayarladığınızda, bu ayar projenizdeki tüm test dosyalarına uygulanır. Daha ayrıntılı kontrol sağlamak için, belirli dosyalar için ortamı belirtmek üzere kontrol yorumlarını kullanabilirsiniz. Kontrol yorumları, @vitest-environment ile başlayan ve ardından ortam adının geldiği yorumlardır:

ts
// @vitest-environment jsdom

import { expect, test } from 'vitest';

test('test', () => {
  expect(typeof window).not.toBe('undefined');
});

Alternatif olarak, glob desenlerine göre ortamı belirten environmentMatchGlobs seçeneğini de ayarlayabilirsiniz.

Özel Ortam ​

Vitest ortamını genişletmek için kendi paketinizi oluşturabilirsiniz. Bunu yapmak için, vitest-environment-${name} adında bir paket oluşturmalı veya geçerli bir JS/TS dosyasına giden bir yol belirtmelisiniz. Bu paket, Environment tipinde bir nesne dışa aktarmalıdır:

ts
import type { Environment } from 'vitest';

export default <Environment>{
  name: 'custom',
  transformMode: 'ssr',
  // isteğe bağlı - yalnızca "experimental-vm" havuzunu destekliyorsanız
  async setupVM() {
    const vm = await import('node:vm');
    const context = vm.createContext();
    return {
      getVmContext() {
        return context;
      },
      teardown() {
        // bu ortamla tüm testler çalıştırıldıktan sonra çağrılır.
      },
    };
  },
  setup() {
    // özel kurulum
    return {
      teardown() {
        // bu ortamla tüm testler çalıştırıldıktan sonra çağrılır.
      },
    };
  },
};

WARNING

Vitest, ortam nesnesinde transformMode seçeneğini zorunlu kılar. Bu seçenek ssr veya web'e eşit olmalıdır. Bu değer, eklentilerin kaynak kodunu nasıl dönüştüreceğini belirler. ssr olarak ayarlanırsa, eklenti kancaları dosyaları dönüştürürken veya çözerken ssr: true alır. Aksi takdirde, ssr false olarak ayarlanır.

Varsayılan Vitest ortamlarına vitest/environments girişi aracılığıyla da erişebilirsiniz:

ts
import { builtinEnvironments, populateGlobal } from 'vitest/environments';

console.log(builtinEnvironments); // { jsdom, happy-dom, node, edge-runtime }

Vitest ayrıca, nesnedeki özellikleri genel ad alanına taşımak için kullanılabilecek populateGlobal yardımcı işlevini de sağlar:

ts
interface PopulateOptions {
  // sınıf olmayan işlevler genel ad alanına bağlanmalı mı?
  bindFunctions?: boolean;
}

interface PopulateResult {
  // değeri orijinal nesnede olmasa bile kopyalanan tüm anahtarların listesi.
  keys: Set<string>;
  // anahtarlarla geçersiz kılınmış olabilecek orijinal nesnenin bir haritası.
  // bu değerleri `teardown` işlevi içinde döndürebilirsiniz.
  originals: Map<string | symbol, any>;
}

export function populateGlobal(
  global: any,
  original: any,
  options: PopulateOptions
): PopulateResult;
Pager
Önceki sayfaTest Bağlamı
Sonraki sayfaEşleştiricileri Genişletme

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

Copyright (c) 2024 Mithril Contributors

https://v2.vitest.dev/guide/environment

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

Copyright (c) 2024 Mithril Contributors