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

Kılavuz

Neden Vitest

Başlangıç

Özellikler

Çalışma Alanı

Komut Satırı Arayüzü

Test Filtreleme

Kapsam

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

Sahtecilik (Mocking)

Tür Testleri

Vitest Arayüzü

Tarayıcı Modu (deneysel)

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

API

Test API Başvurusu

Mock Fonksiyonlar

Vi

expect

expectTypeOf

assertType

Yapılandırma

Vitest'i Yapılandırma

Bu sayfada

Vitest'i Yapılandırma ​

Yapılandırma ​

vitest, Vite uygulamanızla uyumlu olması için eklentiler ve yapılandırma açısından mevcutsa kök vite.config.ts dosyanızı okuyacaktır. Test için farklı bir yapılandırmaya sahip olmak veya ana uygulamanız özellikle Vite'e bağlı değilse, şunları yapabilirsiniz:

  • vitest.config.ts oluşturun; bu, daha yüksek önceliğe sahip olacak ve vite.config.ts dosyasındaki yapılandırmayı geçersiz kılacaktır.
  • CLI'ya --config seçeneğini geçirin, örneğin vitest --config ./path/to/vitest.config.ts.
  • vite.config.ts içinde farklı yapılandırmayı koşullu olarak uygulamak için process.env.VITEST veya defineConfig üzerindeki mode özelliğini kullanın (test/benchmark olarak ayarlanacaktır, geçersiz kılınmazsa).

vitest'i yapılandırmak için, Vite yapılandırmanıza test özelliğini ekleyin. Ayrıca, defineConfig'i doğrudan vite'den içe aktarıyorsanız, yapılandırma dosyanızın en üstünde bir üç eğik çizgi direktifi kullanarak Vitest türlerine bir referans eklemeniz gerekecektir.

vite'tan defineConfig kullanıyorsanız şunu izleyin:

ts
/// <reference types="vitest" />
import { defineConfig } from 'vite';

export default defineConfig({
  test: {
    // ...
  },
});

vitest/config'ten defineConfig kullanıyorsanız şunu izleyin:

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

export default defineConfig({
  test: {
    // ...
  },
});

Gerekirse Vitest'in varsayılan seçeneklerini aşağıdaki gibi genişletebilirsiniz:

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

export default defineConfig({
  test: {
    exclude: [...configDefaults.exclude, 'packages/template/*'],
  },
});

Ayrı bir vitest.config.js kullanıyorsanız, Vite'ın seçeneklerini başka bir yapılandırma dosyasından aşağıdaki gibi genişletebilirsiniz:

ts
import { defineConfig, mergeConfig } from 'vitest/config';
import viteConfig from './vite.config';

export default mergeConfig(
  viteConfig,
  defineConfig({
    test: {
      exclude: ['packages/template/*'],
    },
  })
);

WARNING

mergeConfig yardımcı fonksiyonu, Vitest v0.30.0 ve sonraki sürümlerinde mevcuttur. Daha düşük bir sürüm kullanıyorsanız, doğrudan vite'den içe aktarabilirsiniz.

Vite yapılandırmanız bir fonksiyon ise, yapılandırmayı aşağıdaki gibi tanımlayabilirsiniz:

ts
import { defineConfig, mergeConfig } from 'vitest/config';
import viteConfig from './vite.config';

export default defineConfig(configEnv =>
  mergeConfig(
    viteConfig(configEnv),
    defineConfig({
      test: {
        exclude: ['packages/template/*'],
      },
    })
  )
);

Seçenekler ​

TIP

Aşağıdaki seçeneklere ek olarak, Vite yapılandırma seçeneklerinden herhangi birini de kullanabilirsiniz. Örneğin, global değişkenleri tanımlamak için define veya alias'ları tanımlamak için resolve.alias.

TIP

Bir çalışma alanı proje yapılandırması içinde desteklenmeyen tüm yapılandırma seçeneklerinin yanında * işareti bulunur.

include ​

  • Tür: string[]
  • Varsayılan: ['**/*.{test,spec}.?(c|m)[jt]s?(x)']

Glob deseni kullanılarak test çalıştırmasına dahil edilecek dosyaların listesi.

exclude ​

  • Tür: string[]
  • Varsayılan: ['**/node_modules/**', '**/dist/**', '**/cypress/**', '**/.{idea,git,cache,output,temp}/**', '**/{karma,rollup,webpack,vite,vitest,jest,ava,babel,nyc,cypress,tsup,build}.config.*']

Glob deseni kullanılarak test çalıştırmasından hariç tutulacak dosyaların listesi.

includeSource ​

  • Tür: string[]
  • Varsayılan: []

Kaynak içi test dosyalarını bulmak için kullanılacak glob desenleri.

Tanımlandığında, Vitest import.meta.vitest ifadesini içeren tüm eşleşen dosyaları çalıştırır.

server ​

  • Tür: { sourcemap?, deps?, ... }
  • Sürüm: Vitest 0.34.0'dan beri

Vite-Node sunucu seçenekleri.

server.sourcemap ​

  • Tür: 'inline' | boolean
  • Varsayılan: 'inline'

Modüllere satır içi kaynak haritası ekleyin.

server.debug ​

  • Tür: { dumpModules?, loadDumppedModules? }

Vite-Node hata ayıklayıcı seçenekleri.

server.debug.dumpModules ​

  • Tür: boolean | string

Dönüştürülen modülü dosya sistemine dökün. Bir dize geçirmek, belirtilen yola dökecektir.

server.debug.loadDumppedModules ​

  • Tür: boolean

Var olduğunda, dökülen modülü dosya sisteminden okuyun. Dosya sisteminden döküm sonucunu değiştirerek hata ayıklamak için kullanışlıdır.

server.deps ​

  • Tür: { external?, inline?, ... }

Bağımlılık çözümlemesi için işlem.

server.deps.external ​

  • Tür: (string | RegExp)[]
  • Varsayılan: [/\/node_modules\//]

Haricileştirme, Vite'ın paketi doğrudan Node'a göndereceği anlamına gelir. Haricileştirilmiş bağımlılıklara Vite'ın dönüştürücüleri ve çözümleyicileri uygulanmayacaktır, bu nedenle yeniden yüklemede HMR'yi desteklemezler. Varsayılan olarak, node_modules içindeki tüm paketler haricileştirilir.

Bu seçenekler, node_modules içinde yazıldığı gibi veya deps.moduleDirectories içinde belirtildiği gibi paket adlarını destekler. Örneğin, packages/some-name içinde bulunan @company/some-name paketi some-name olarak belirtilmelidir ve packages, deps.moduleDirectories'e dahil edilmelidir. Temel olarak, Vitest her zaman dosya yolunu kontrol eder, gerçek paket adını değil.

Regexp kullanılıyorsa, Vitest bunu paket adında değil, dosya yolunda çağırır.

server.deps.inline ​

  • Tür: (string | RegExp)[] | true
  • Varsayılan: []

Vite, satır içi modülleri işleyecektir. Bu, .js'yi ESM biçiminde gönderen paketleri (Node'un işleyemediği) işlemek için yararlı olabilir.

true ise, her bağımlılık satır içine alınacaktır. ssr.noExternal içinde belirtilen tüm bağımlılıklar varsayılan olarak satır içine alınacaktır.

server.deps.fallbackCJS ​

  • Tür boolean
  • Varsayılan: false

Bir bağımlılık geçerli bir ESM paketi olduğunda, yola göre cjs sürümünü tahmin etmeye çalışın. Bu, bir bağımlılığın yanlış ESM dosyasına sahip olması durumunda yararlı olabilir.

Bu durum, bir paketin ESM ve CJS sürümlerinde farklı mantıklar olması halinde uyumsuzluklara yol açabilir.

server.deps.cacheDir ​

  • Tür string
  • Varsayılan: 'node_modules/.vite'

Önbellek dosyalarının kaydedileceği dizin.

deps ​

  • Tür: { optimizer?, registerNodeLoader?, ... }

Bağımlılık çözümleme ayarları.

deps.optimizer ​

  • Tür: { ssr?, web? }
  • Sürüm: Vitest 0.34.0'dan beri
  • Ayrıca bakınız: Bağımlılık Optimizasyon Seçenekleri

Bağımlılık optimizasyonunu etkinleştirin. Çok sayıda testiniz varsa, bu işlem testlerin performansını artırabilir. Vitest 0.34.0'dan önce, deps.experimentalOptimizer olarak adlandırılıyordu.

Vitest, include içinde listelenen harici kitaplıkla karşılaştığında, esbuild kullanarak tek bir dosyada paketlenecek ve bir bütün modül olarak içe aktarılacaktır. Bu birkaç nedenden dolayı iyidir:

  • Çok sayıda içe aktarma içeren paketleri içe aktarmak maliyetlidir. Bunları tek bir dosyada paketleyerek çok zaman kazanabiliriz.
  • UI kitaplıklarını içe aktarmak maliyetlidir çünkü Node.js içinde çalışmak için tasarlanmamışlardır.
  • alias yapılandırmanız artık paketlenmiş paketler içinde dikkate alınır.
  • Bu sayede testlerinizdeki kod, tarayıcıdaki çalışma ortamına daha yakın bir ortamda çalışır.

Yalnızca deps.optimizer?.[mode].include seçeneğindeki paketlerin paketlendiğini unutmayın (bazı eklentiler bunu otomatik olarak doldurur, örneğin Svelte). Vite belgelerinde (Vitest, disable ve noDiscovery seçeneklerini desteklemez) mevcut seçenekler hakkında daha fazla bilgi edinebilirsiniz. Varsayılan olarak, Vitest jsdom ve happy-dom ortamları için optimizer.web ve node ve edge ortamları için optimizer.ssr kullanır, ancak transformMode ile yapılandırılabilir.

Bu seçenekler ayrıca optimizeDeps yapılandırmanızı da devralır (web için Vitest optimizeDeps'i genişletecek, ssr için - ssr.optimizeDeps). deps.optimizer içinde include/exclude seçeneğini yeniden tanımlarsanız, testleri çalıştırırken optimizeDeps'inizi genişletecektir. Vitest, exclude içinde listelenen aynı seçenekleri include'dan otomatik olarak kaldırır.

TIP

Hata ayıklama için node_modules kodunuzu düzenleyemeyeceksiniz, çünkü kod aslında cacheDir veya test.cache.dir dizininizde bulunur. console.log ifadeleriyle hata ayıklamak istiyorsanız, doğrudan düzenleyin veya deps.optimizer?.[mode].force seçeneğiyle yeniden paketlemeyi zorlayın.

deps.optimizer.{mode}.enabled ​

  • Tür: boolean
  • Varsayılan: >= Vite 4.3.2 kullanılıyorsa true, aksi takdirde false

Bağımlılık optimizasyonunu etkinleştirin.

WARNING

Bu seçenek yalnızca Vite 4.3.2 ve üstü ile çalışır.

deps.web ​

  • Tür: { transformAssets?, ... }
  • Sürüm: Vite 0.34.2'den beri

Dönüştürme modu web olarak ayarlandığında harici dosyalara uygulanan ayarlar. Varsayılan olarak, jsdom ve happy-dom web modunu kullanırken, node ve edge ortamları ssr dönüştürme modunu kullanır, bu nedenle bu seçeneklerin bu ortamlardaki dosyalar üzerinde hiçbir etkisi olmayacaktır.

Genellikle, node_modules içindeki dosyalar haricileştirilir, ancak bu seçenekler server.deps.external içindeki dosyaları da etkiler.

deps.web.transformAssets ​

  • Tür: boolean
  • Varsayılan: true

Vitest, resim (.png, .svg, .jpg, vb.) dosyalarını Vite'ın tarayıcıda yaptığı gibi işlemeli ve çözümlemeli mi?

Hiçbir sorgu belirtilmemişse, bu modülün varlığın yoluna eşit bir varsayılan dışa aktarımı olacaktır.

WARNING

Şu anda, bu seçenek yalnızca experimentalVmThreads havuzuyla çalışır.

deps.web.transformCss ​

  • Tür: boolean
  • Varsayılan: true

Vitest, CSS (.css, .scss, .sass, vb.) dosyalarını Vite'ın tarayıcıda yaptığı gibi işlemeli ve çözümlemeli mi?

CSS dosyaları css seçenekleriyle devre dışı bırakılırsa, bu seçenek yalnızca ERR_UNKNOWN_FILE_EXTENSION hatalarını susturacaktır.

WARNING

Şu anda, bu seçenek yalnızca experimentalVmThreads havuzuyla çalışır.

deps.web.transformGlobPattern ​

  • Tür: RegExp | RegExp[]
  • Varsayılan: []

Dönüştürülmesi gereken harici dosyaları belirlemek için kullanılacak Regexp deseni.

Varsayılan olarak, node_modules içindeki dosyalar haricileştirilir ve dönüştürülmez, CSS veya bir varlık olmadığı ve karşılık gelen seçenek devre dışı bırakılmadığı sürece.

WARNING

Şu anda, bu seçenek yalnızca experimentalVmThreads havuzuyla çalışır.

deps.registerNodeLoader* ​

  • Tür: boolean
  • Varsayılan: false

Vite çözümleme algoritmasını kullanarak, haricileştirilmiş dosyaların içindeki içe aktarmaları çözümlemek için deneysel Node yükleyicisini kullanın.

Devre dışı bırakılırsa, alias ve <plugin>.resolveId, haricileştirilmiş paketlerin içindeki içe aktarmaları etkilemez (varsayılan olarak, node_modules).

deps.interopDefault ​

  • Tür: boolean
  • Varsayılan: true

CJS modülünün varsayılanını adlandırılmış dışa aktarımlar olarak yorumlayın. Bazı bağımlılıklar yalnızca CJS modüllerini paketler ve bir paket require yerine import sözdizimi kullanılarak içe aktarıldığında Node.js'nin statik olarak analiz edebileceği adlandırılmış dışa aktarmaları kullanmaz. Node ortamında adlandırılmış dışa aktarmaları kullanarak bu tür bağımlılıkları içe aktarırken, şu hatayı göreceksiniz:

import { read } from 'fs-jetpack';
         ^^^^
SyntaxError: Named export 'read' not found. The requested module 'fs-jetpack' is a CommonJS module, which may not support all module.exports as named exports.
CommonJS modules can always be imported via the default export.

Vitest statik analiz yapmaz ve kodunuzu çalıştırmadan önce başarısız olamaz, bu nedenle bu özellik devre dışı bırakılırsa, testleri çalıştırırken büyük olasılıkla bu hatayı göreceksiniz:

TypeError: createAsyncThunk is not a function
TypeError: default is not a function

Varsayılan olarak, Vitest bunu atlamak için bir paketleyici kullandığınızı varsayar ve başarısız olmaz, ancak kodunuz işlenmezse bu davranışı manuel olarak devre dışı bırakabilirsiniz.

deps.moduleDirectories ​

  • Tür: string[]
  • Varsayılan: ['node_modules']

Modül dizini olarak kabul edilecek dizinlerin listesi. Bu yapılandırma seçeneği, vi.mock fonksiyonunun davranışını etkiler: hiçbir fabrika sağlanmadığında ve taklit ettiğiniz şeyin yolu moduleDirectories değerlerinden biriyle eşleştiğinde, Vitest projenin kökünde bir __mocks__ klasörü arayarak taklidi çözümlemeye çalışacaktır.

Bu seçenek, bağımlılıkları haricileştirirken bir dosyanın modül olarak kabul edilip edilmeyeceğini de etkileyecektir. Varsayılan olarak, Vitest harici modülleri Vite dönüştürme adımını atlayarak yerel Node.js ile içe aktarır.

Bu seçeneği ayarlamak varsayılan davranışı değiştirecektir. node_modules dizininde paket aramaya devam etmek istiyorsanız, bu dizini diğer seçeneklerle birlikte belirtin:

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

export default defineConfig({
  test: {
    deps: {
      moduleDirectories: ['node_modules', path.resolve('../../packages')],
    },
  },
});

runner ​

  • Tür: VitestRunnerConstructor
  • Varsayılan: Testler çalıştırılırken node veya benchmark'lar çalıştırılırken benchmark

Özel bir test çalıştırıcısının dosya yolu. Bu gelişmiş bir özelliktir ve özel kitaplık çalıştırıcılarıyla kullanılmalıdır. Belgelerde bunun hakkında daha fazla bilgi edinebilirsiniz.

benchmark ​

  • Tür: { include?, exclude?, ... }

vitest bench çalıştırılırken kullanılan seçenekler.

benchmark.include ​

  • Tür: string[]
  • Varsayılan: ['**/*.{bench,benchmark}.?(c|m)[jt]s?(x)']

Benchmark test dosyalarını dahil etmek için kullanılacak glob desenleri.

benchmark.exclude ​

  • Tür: string[]
  • Varsayılan: ['node_modules', 'dist', '.idea', '.git', '.cache']

Benchmark test dosyalarını hariç tutmak için kullanılacak glob desenleri.

benchmark.includeSource ​

  • Tür: string[]
  • Varsayılan: []

Kaynak içi benchmark test dosyaları için glob'ları dahil edin. Bu seçenek includeSource'a benzer.

Tanımlandığında, Vitest import.meta.vitest ifadesini içeren tüm eşleşen dosyaları çalıştırır.

benchmark.reporters ​

  • Tür: Arrayable<BenchmarkBuiltinReporters | Reporter>
  • Varsayılan: 'default'

Çıktı için özel raporlayıcı. Bir veya daha fazla yerleşik rapor adı, muhabir örneği ve/veya özel muhabirlerin yollarını içerebilir.

benchmark.outputFile ​

  • Tür: string | Record<string, string>

--reporter=json seçeneği de belirtildiğinde benchmark sonuçlarını bir dosyaya yazın. Birden çok raporlayıcı kullanıyorsanız, bir dize yerine bir nesne belirterek her raporlayıcı için ayrı çıktı dosyaları tanımlayabilirsiniz.

CLI komutu aracılığıyla nesne sağlamak için şu sözdizimini kullanın: --outputFile.json=./path --outputFile.junit=./other-path.

alias ​

  • Tür: Record<string, string> | Array<{ find: string | RegExp, replacement: string, customResolver?: ResolverFunction | ResolverObject }>

Testler sırasında kullanılacak özel takma adlar tanımlayın. Bunlar resolve.alias'tan takma adlarla birleştirilecektir.

globals ​

  • Tür: boolean
  • Varsayılan: false
  • CLI: --globals, --globals=false

Varsayılan olarak, vitest daha açık bir yapılandırma için global API'ler sunmaz. Jest gibi API'leri global olarak kullanmayı tercih ederseniz, CLI'ya --globals seçeneğini iletebilir veya yapılandırmada globals: true ekleyebilirsiniz.

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

export default defineConfig({
  test: {
    globals: true,
  },
});

TypeScript'in global API'leri tanıması için, tsconfig.json dosyanızdaki types dizisine vitest/globals ekleyin.

json
// tsconfig.json
{
  "compilerOptions": {
    "types": ["vitest/globals"]
  }
}

Projenizde zaten unplugin-auto-import kullanıyorsanız, bu API'leri otomatik olarak içe aktarmak için doğrudan da kullanabilirsiniz.

ts
// vite.config.ts
import { defineConfig } from 'vitest/config';
import AutoImport from 'unplugin-auto-import/vite';

export default defineConfig({
  plugins: [
    AutoImport({
      imports: ['vitest'],
      dts: true, // TypeScript tanımlama dosyası oluştur
    }),
  ],
});

environment ​

  • Tür: 'node' | 'jsdom' | 'happy-dom' | 'edge-runtime' | string
  • Varsayılan: 'node'
  • CLI: --environment=<ortam>

Testler için kullanılacak ortamı belirtir. Vitest'teki varsayılan ortam Node.js'dir. Bir web uygulaması geliştiriyorsanız, jsdom veya happy-dom kullanarak tarayıcı ortamını taklit edebilirsiniz. Edge fonksiyonları geliştiriyorsanız, edge-runtime ortamını kullanabilirsiniz.

Bir dosyanın en üstüne @vitest-environment docblock'u veya yorumu ekleyerek, o dosyadaki tüm testler için farklı bir ortam belirleyebilirsiniz:

Docblock stili:

js
/**
 * @vitest-environment jsdom
 */

test('bu test dosyasında jsdom kullan', () => {
  const element = document.createElement('div');
  expect(element).not.toBeNull();
});

Tek satır yorum stili:

js
// @vitest-environment happy-dom

test('bu test dosyasında happy-dom kullan', () => {
  const element = document.createElement('div');
  expect(element).not.toBeNull();
});

Jest ile uyumluluk için @jest-environment da kullanılabilir:

js
/**
 * @jest-environment jsdom
 */

test('bu test dosyasında jsdom kullan', () => {
  const element = document.createElement('div');
  expect(element).not.toBeNull();
});

Vitest'i --threads=false bayrağıyla çalıştırıyorsanız, testleriniz şu sırada çalıştırılır: node, jsdom, happy-dom, edge-runtime, özel ortam tanımları. Bu, aynı ortama sahip testlerin birlikte gruplandırıldığı ve sıralı olarak çalıştırıldığı anlamına gelir.

0.23.0 sürümünden itibaren, özel ortamlar da tanımlayabilirsiniz. Yerleşik bir ortam kullanılmadığında, Vitest vitest-environment-${name} paketini yüklemeye çalışır. Bu paket, Environment tipinde bir nesne dışa aktarmalıdır:

ts
import type { Environment } from 'vitest';

export default <Environment>{
  name: 'custom',
  transformMode: 'ssr',
  setup() {
    // özel kurulum
    return {
      teardown() {
        // Bu ortama sahip tüm testler çalıştırıldıktan sonra çağrılır
      },
    };
  },
};

Vitest ayrıca, genişletmek istemeniz durumunda vitest/environments girişi aracılığıyla builtinEnvironments'ı da kullanıma sunar. Ortamları genişletme hakkında daha fazla bilgiyi kılavuzumuzda bulabilirsiniz.

environmentOptions ​

  • Tür: Record<'jsdom' | string, unknown>
  • Varsayılan: {}

Bu seçenekler, kullanılan environment ayarının setup fonksiyonuna aktarılır. Varsayılan olarak, test ortamınız olarak JSDOM kullanıyorsanız yalnızca JSDOM seçeneklerini yapılandırabilirsiniz.

environmentMatchGlobs ​

  • Tür: [string, EnvironmentName][]
  • Varsayılan: []

Ortamı glob desenlerine göre otomatik olarak belirleyin. İlk eşleşme kullanılacaktır.

Örneğin:

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

export default defineConfig({
  test: {
    environmentMatchGlobs: [
      // tests/dom içindeki tüm testler jsdom'da çalışacaktır
      ['tests/dom/**', 'jsdom'],
      // tests/ içindeki .edge.test.ts ile biten tüm testler edge-runtime'da çalışacaktır
      ['**/*.edge.test.ts', 'edge-runtime'],
      // ...
    ],
  },
});

poolMatchGlobs ​

  • Tür: [string, 'threads' | 'child_process' | 'experimentalVmThreads'][]
  • Varsayılan: []
  • Sürüm: Vitest 0.29.4'ten beri

Testlerin hangi havuzda çalışacağını glob desenlerine göre otomatik olarak belirleyin. İlk eşleşme kullanılacaktır.

Örneğin:

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

export default defineConfig({
  test: {
    poolMatchGlobs: [
      // "worker-specific" dizinindeki tüm testler, `--threads` parametresi kullanılmış gibi bir worker içinde çalışacaktır
      ['**/tests/worker-specific/**', 'threads'],
      // "browser" dizinindeki tüm testleri gerçek bir tarayıcıda çalıştırın
      ['**/tests/browser/**', 'browser'],
      // diğer tüm testler, başka glob'lar belirtmediyseniz "browser.enabled" ve "threads" seçeneklerine göre çalışacaktır
      // ...
    ],
  },
});

update* ​

  • Tür: boolean
  • Varsayılan: false
  • CLI: -u, --update, --update=false

Snapshot dosyalarını güncelleyin. Bu, tüm değiştirilen snapshot'ları güncelleyecek ve eski olanları silecektir.

watch* ​

  • Tür: boolean
  • Varsayılan: true
  • CLI: -w, --watch, --watch=false

İzleme modunu etkinleştirin.

root ​

  • Tür: string
  • CLI: -r <yol>, --root=<yol>

Proje kök dizini.

reporters* ​

  • Tür: Reporter | Reporter[]
  • Varsayılan: 'default'
  • CLI: --reporter=<ad>, --reporter=<ad1> --reporter=<ad2>

Çıktı için özel raporlayıcı. Raporlayıcı bir Reporter örneği veya yerleşik raporlayıcılardan birini seçmek için bir dize olabilir:

  • 'default' - Test grupları geçtiğinde daraltır.
  • 'basic' - Sürekli entegrasyon ortamındaki varsayılan raporlayıcı gibi temel bir raporlayıcı sağlar.
  • 'verbose' - Tam görev ağacını görünür tutar.
  • 'dot' - Her görevi tek bir nokta olarak gösterir.
  • 'junit' - JUnit XML raporlayıcı (testsuites etiket adını VITEST_JUNIT_SUITE_NAME ortam değişkeni ile, classname etiket özelliğini ise VITEST_JUNIT_CLASSNAME ile yapılandırabilirsiniz).
  • 'json' - Basit bir JSON özeti verir.
  • 'html' - @vitest/ui tabanlı HTML raporu verir.
  • 'hanging-process' - Vitest işlemi güvenli bir şekilde sonlandırılamazsa, asılı kalan işlemlerin bir listesini görüntüler. Bu ağır bir işlem olabilir, yalnızca Vitest işlemi sürekli olarak sonlandırılamazsa etkinleştirin.
  • Özel bir raporlayıcının yolu (örn. './path/to/reporter.ts', '@scope/reporter').

outputFile* ​

  • Tür: string | Record<string, string>
  • CLI: --outputFile=<yol>, --outputFile.json=./yol

--reporter=json, --reporter=html veya --reporter=junit seçeneği de belirtildiğinde test sonuçlarını bir dosyaya yazın. Bir dize yerine bir nesne sağlayarak, birden çok raporlayıcı kullanırken ayrı çıktı dosyaları tanımlayabilirsiniz.

experimentalVmThreads ​

  • Tür: boolean
  • CLI: --experimentalVmThreads, --experimental-vm-threads
  • Sürüm: Vitest 0.34.0'dan beri

Testleri bir worker havuzunda VM bağlamı (izole edilmiş bir ortam) kullanarak çalıştırın.

Bu, testlerin daha hızlı çalışmasını sağlayabilir, ancak ESM kodu çalıştırılırken VM modülü kararsız olabilir. Testlerinizde bellek sızıntısı oluşabilir. Bunu önlemek için experimentalVmWorkerMemoryLimit değerini manuel olarak ayarlamayı düşünebilirsiniz.

WARNING

Kodu bir sanal alanda çalıştırmanın bazı avantajları (daha hızlı testler) vardır, ancak aynı zamanda bir dizi dezavantajı da vardır.

  • (fs, path, vb.) gibi yerel modüller içindeki genel değişkenler, test ortamınızda bulunan genel değişkenlerden farklıdır. Sonuç olarak, bu yerel modüller tarafından atılan herhangi bir hata, kodunuzda kullanılanla karşılaştırıldığında farklı bir Hata oluşturucusuna başvuracaktır:
ts
try {
  fs.writeFileSync('/doesnt exist');
} catch (err) {
  console.log(err instanceof Error); // false
}
  • ES modüllerini içe aktarmak, bunları süresiz olarak önbelleğe alır ve bu da çok sayıda bağlamınız (test dosyaları) varsa bellek sızıntılarına neden olur. Node.js'de bu önbelleği temizleyen bir API yoktur.
  • Genel değişkenlere erişmek, bir sanal alan ortamında daha uzun sürer.

Lütfen bu seçeneği kullanırken bu sorunların farkında olun. Vitest ekibi, tarafımızdaki sorunlardan herhangi birini çözemez.

experimentalVmWorkerMemoryLimit ​

  • Tür: string | number
  • CLI: --experimentalVmWorkerMemoryLimit, --experimental-vm-worker-memory-limit
  • Varsayılan: 1 / CPU Çekirdekleri
  • Sürüm: Vitest 0.34.0'dan beri

Worker'ların yeniden başlatılmadan önceki bellek sınırını belirtir. Bu değer büyük oranda ortama bağlı olduğundan, varsayılan değere güvenmek yerine manuel olarak belirtmek daha iyi olabilir.

Bu seçenek yalnızca testleri VM bağlamında çalıştıran worker'ları etkiler.

TIP

Uygulama, Jest'in workerIdleMemoryLimit özelliğine dayanmaktadır.

Sınır, farklı şekillerde belirtilebilir ve sonuç ne olursa olsun, bir tamsayı değerine dönüştürmek için Math.floor kullanılır:

  • <= 1 - Değerin sistem belleğinin bir yüzdesi olduğu varsayılır. Bu nedenle 0,5, worker'ın bellek sınırını toplam sistem belleğinin yarısına ayarlar.

  • \> 1 - Sabit bir bayt değeri olduğu varsayılır. Önceki kural nedeniyle 1 baytlık bir değer istiyorsanız (nedenini bilmiyorum) 1,1 kullanabilirsiniz.

  • Birimlerle

    • %50 - Yukarıdaki gibi, toplam sistem belleğinin bir yüzdesi.

    • 100KB, 65MB, vb. - Sabit bir bellek sınırını belirtmek için birimlerle.

      • K / KB - Kilobayt (x1000)
      • KiB - Kibibayt (x1024)
      • M / MB - Megabayt
      • MiB - Mebibayt
      • G / GB - Gigabayt
      • GiB - Gibibayt

WARNING

Yüzde tabanlı bellek sınırı, yanlış sistem belleği raporlandığı için Linux CircleCI worker'larında çalışmaz.

threads ​

  • Tür: boolean
  • Varsayılan: true
  • CLI: --threads, --threads=false

tinypool (Piscina'nın hafif bir türevi) kullanarak çoklu iş parçacığını etkinleştirin. Vitest 0.29.0'dan önce, bu seçenek devre dışı bırakılsa bile Vitest hala testleri worker iş parçacığı içinde çalıştırıyordu. 0.29.0'dan beri, bu seçenek devre dışı bırakılırsa, Vitest testleri çalıştırmak için bir alt işlem oluşturmak üzere child_process kullanır. Bu sayede process.chdir gibi worker'lar içinde kullanılamayan API'leri kullanabilirsiniz. Önceki davranışa dönmek istiyorsanız, bunun yerine --single-thread seçeneğini kullanın.

Bu seçeneğin devre dışı bırakılması, tüm testlerin birden fazla alt işlem içinde çalışmasına neden olur.

singleThread ​

  • Tür: boolean
  • Varsayılan: false
  • Sürüm: Vitest 0.29.0'dan beri

Aynı ortama sahip tüm testleri tek bir worker iş parçacığı içinde çalıştırın. Bu, yerleşik modül yalıtımını devre dışı bırakır (kaynak kodunuz veya satır içi kodunuz her test için yeniden değerlendirilecektir), ancak test performansını artırabilir. Vitest 0.29.0'dan önce bu, --no-threads kullanmaya eşdeğerdi.

WARNING

Bu seçenek testlerin art arda çalışmasını sağlasa da, Jest'in --runInBand seçeneğinden farklıdır. Vitest, worker'ları yalnızca testleri paralel olarak çalıştırmak için değil, aynı zamanda yalıtım sağlamak için de kullanır. Bu seçeneği devre dışı bırakarak, testleriniz sıralı olarak, ancak aynı genel bağlamda çalışacaktır, bu nedenle yalıtımı kendiniz sağlamanız gerekir.

Eğer global state'e (genellikle frontend framework'leri kullanır) veya kodunuz her test için ayrı olarak tanımlanması gereken bir ortama bağlıysa, bu durum çeşitli sorunlara yol açabilir. Ancak global state'e mutlaka güvenmeyen veya bunu kolayca atlayabilen testleriniz için bir hız artışı olabilir (3 kata kadar daha hızlı).

maxThreads* ​

  • Tür: number
  • Varsayılan: kullanılabilir CPU sayısı

Maksimum iş parçacığı sayısı. VITEST_MAX_THREADS ortam değişkenini de kullanabilirsiniz.

minThreads* ​

  • Tür: number
  • Varsayılan: kullanılabilir CPU sayısı

Minimum iş parçacığı sayısı. VITEST_MIN_THREADS ortam değişkenini de kullanabilirsiniz.

useAtomics* ​

  • Tür: boolean
  • Varsayılan: false
  • Sürüm: Vitest 0.28.3'ten beri

İş parçacıklarını senkronize etmek için Atomics kullanın.

Bu, bazı durumlarda performansı artırabilir, ancak eski Node sürümlerinde segmentation fault'a neden olabilir.

testTimeout ​

  • Tür: number
  • Varsayılan: 5000
  • CLI: --test-timeout=5000

Bir testin milisaniye cinsinden varsayılan zaman aşımı süresi.

hookTimeout ​

  • Tür: number
  • Varsayılan: 10000

Bir hook'un milisaniye cinsinden varsayılan zaman aşımı süresi.

teardownTimeout* ​

  • Tür: number
  • Varsayılan: 10000

Vitest kapandığında kapanmayı beklemek için milisaniye cinsinden varsayılan zaman aşımı süresi.

silent* ​

  • Tür: boolean
  • Varsayılan: false
  • CLI: --silent, --silent=false

Testlerden gelen konsol çıktısını gizleyin.

setupFiles ​

  • Tür: string | string[]

Kurulum dosyalarının konumu. Bu dosyalar her test dosyasından önce çalıştırılır.

INFO

Kurulum dosyalarını değiştirmek, tüm testlerin yeniden çalıştırılmasını tetikleyecektir.

İş parçacıkları arasında ayrım yapmak için içinde process.env.VITEST_POOL_ID (tamsayı benzeri dize) kullanabilirsiniz (threads: false ile çalıştırılırsa her zaman '1' olacaktır).

TIP

--threads=false çalıştırıyorsanız, bu kurulum dosyasının aynı genel kapsamda birden çok kez çalıştırılacağını unutmayın. Yani, her testten önce aynı global nesneye eriştiğiniz anlamına gelir. Bu nedenle, gereğinden fazla aynı işlemleri yapmadığınızdan emin olun.

Örneğin, genel bir değişkene güvenebilirsiniz:

ts
import { config } from '@some-testing-lib';

if (!globalThis.defined) {
  config.plugins = [myCoolPlugin];
  computeHeavyThing();
  globalThis.defined = true;
}

// hook'lar her suite'ten önce sıfırlanır
afterEach(() => {
  cleanup();
});

globalThis.resetBeforeEachTest = true;

globalSetup ​

  • Tür: string | string[]

Proje köküne göre global kurulum dosyalarının yolu.

Global bir kurulum dosyası, setup ve teardown adında fonksiyonlar veya bir temizleme fonksiyonu döndüren bir default fonksiyonu dışa aktarabilir (örnek).

INFO

Birden çok globalSetup dosyası mümkündür. Kurulum ve teardown sıralı olarak, teardown ise ters sırada yürütülür.

WARNING

Global kurulumun farklı bir global kapsamda çalıştırıldığına dikkat edin, bu nedenle testleriniz burada tanımlanan değişkenlere erişemez.

watchExclude* ​

  • Tür: string[]
  • Varsayılan: ['**/node_modules/**', '**/dist/**']

İzleme modunda yeniden başlatmayı tetiklememesi gereken dosya yollarının Glob deseni.

forceRerunTriggers* ​

  • Tür: string[]
  • Varsayılan: ['**/package.json/**', '**/vitest.config.*/**', '**/vite.config.*/**']

Tüm test grubunun yeniden çalıştırılmasını tetikleyecek dosya yollarının Glob deseni. --changed argümanıyla eşleştirildiğinde, tetikleyici git farklarında bulunursa tüm test paketini çalıştırır.

Vite bir modül grafiği oluşturamadığı durumlarda, CLI komutlarını test ediyorsanız bu özellik kullanışlıdır.

ts
test('bir komut dosyası yürütün', async () => {
  // `dist/index.js` içeriği değişirse Vitest bu testi yeniden çalıştıramaz
  await execa('node', ['dist/index.js']);
});

TIP

Dosyalarınızın watchExclude tarafından hariç tutulmadığından emin olun.

isolate ​

  • Tür: boolean
  • Varsayılan: true
  • CLI: --isolate, --isolate=false

Her test dosyası için ayrı bir ortam oluşturur. --threads özelliği devre dışı bırakılırsa çalışmaz.

Bu seçeneğin experimentalVmThreads üzerinde bir etkisi yoktur.

coverage* ​

Kapsam bilgisi toplamak için v8, istanbul veya özel bir kapsam sağlayıcısı kullanabilirsiniz.

Nokta gösterimiyle CLI'ya kapsam seçenekleri aktarabilirsiniz:

sh
npx vitest --coverage.enabled --coverage.provider=istanbul --coverage.all

WARNING

Nokta gösterimiyle kapsam seçenekleri kullanıyorsanız, --coverage.enabled seçeneğini belirtmeyi unutmayın. Bu durumda yalnızca --coverage seçeneğini kullanmayın.

coverage.provider ​

  • Tür: 'v8' | 'istanbul' | 'custom'
  • Varsayılan: 'v8'
  • CLI: --coverage.provider=<provider>

Kapsam toplama aracı olarak provider'ı kullanır.

coverage.enabled ​

  • Tür: boolean
  • Varsayılan: false
  • Sağlayıcılar için kullanılabilir: 'v8' | 'istanbul'
  • CLI: --coverage.enabled, --coverage.enabled=false

Kod kapsamı analizini etkinleştirir. --coverage CLI seçeneği kullanılarak geçersiz kılınabilir.

coverage.include ​

  • Tür: string[]
  • Varsayılan: ['**']
  • Sağlayıcılar için kullanılabilir: 'v8' | 'istanbul'
  • CLI: --coverage.include=<path>, --coverage.include=<path1> --coverage.include=<path2>

Kapsama dahil edilecek dosyaların glob desenlerinin listesi.

coverage.extension ​

  • Tür: string | string[]
  • Varsayılan: ['.js', '.cjs', '.mjs', '.ts', '.mts', '.cts', '.tsx', '.jsx', '.vue', '.svelte']
  • Sağlayıcılar için kullanılabilir: 'v8' | 'istanbul'
  • CLI: --coverage.extension=<extension>, --coverage.extension=<extension1> --coverage.extension=<extension2>

coverage.exclude ​

  • Tür: string[]
  • Varsayılan:
js
[
  'coverage/**',
  'dist/**',
  'packages/*/test?(s)/**',
  '**/*.d.ts',
  '**/virtual:*',
  '**/__x00__*',
  '**/\x00*',
  'cypress/**',
  'test?(s)/**',
  'test?(-*).?(c|m)[jt]s?(x)',
  '**/*{.,-}{test,spec}.?(c|m)[jt]s?(x)',
  '**/__tests__/**',
  '**/{karma,rollup,webpack,vite,vitest,jest,ava,babel,nyc,cypress,tsup,build}.config.*',
  '**/vitest.{workspace,projects}.[jt]s?(on)',
  '**/.{eslint,mocha,prettier}rc.{?(c|m)js,yml}',
];
  • Sağlayıcılar için kullanılabilir: 'v8' | 'istanbul'
  • CLI: --coverage.exclude=<path>, --coverage.exclude=<path1> --coverage.exclude=<path2>

Kapsam dışında bırakılacak dosyaların glob desenlerinin listesi.

coverage.all ​

  • Tür: boolean
  • Varsayılan: false
  • Sağlayıcılar için kullanılabilir: 'v8' | 'istanbul'
  • CLI: --coverage.all, --coverage.all=false

Test edilmemiş dosyalar da dahil olmak üzere tüm dosyaların rapora dahil edilip edilmeyeceğini belirtir.

coverage.clean ​

  • Tür: boolean
  • Varsayılan: true
  • Sağlayıcılar için kullanılabilir: 'v8' | 'istanbul'
  • CLI: --coverage.clean, --coverage.clean=false

Testler çalıştırılmadan önce kapsam sonuçlarını temizler.

coverage.cleanOnRerun ​

  • Tür: boolean
  • Varsayılan: true
  • Sağlayıcılar için kullanılabilir: 'v8' | 'istanbul'
  • CLI: --coverage.cleanOnRerun, --coverage.cleanOnRerun=false

Yeniden çalıştırmalarda kapsam raporunu temizler.

coverage.reportsDirectory ​

  • Tür: string
  • Varsayılan: './coverage'
  • Sağlayıcılar için kullanılabilir: 'v8' | 'istanbul'
  • CLI: --coverage.reportsDirectory=<path>

Kapsam raporunun kaydedileceği dizin.

coverage.reporter ​

  • Tür: string | string[] | [string, {}][]
  • Varsayılan: ['text', 'html', 'clover', 'json']
  • Sağlayıcılar için kullanılabilir: 'v8' | 'istanbul'
  • CLI: --coverage.reporter=<reporter>, --coverage.reporter=<reporter1> --coverage.reporter=<reporter2>

Kullanılacak kapsam raporlayıcıları. Tüm raporlayıcıların ayrıntılı listesi için istanbul belgelerine bakın. Raporlayıcıya özgü seçenekler hakkında ayrıntılar için @types/istanbul-reporter adresine bakın.

Raporlayıcının üç farklı türü vardır:

  • Tek bir raporlayıcı: { reporter: 'html' }
  • Seçenekler olmadan birden çok raporlayıcı: { reporter: ['html', 'json'] }
  • Raporlayıcı seçenekleriyle tek veya birden çok raporlayıcı:
    ts
    {
      reporter: [
        ['lcov', { projectRoot: './src' }],
        ['json', { file: 'coverage.json' }],
        ['text'],
      ];
    }

Vitest 0.31.0'dan beri, kapsam raporunuzu Vitest UI'da kontrol edebilirsiniz: daha fazla ayrıntı için Vitest UI Kapsamı bölümüne bakın.

coverage.reportOnFailure ​

  • Tür: boolean
  • Varsayılan: false (Vitest 0.34.0'dan beri)
  • Sağlayıcılar için kullanılabilir: 'v8' | 'istanbul'
  • CLI: --coverage.reportOnFailure, --coverage.reportOnFailure=false
  • Sürüm: Vitest 0.31.2'den beri

Testler başarısız olduğunda da kapsam raporu oluşturulmasını sağlar.

coverage.allowExternal ​

  • Tür: boolean
  • Varsayılan: false
  • Sağlayıcılar için kullanılabilir: 'v8' | 'istanbul'
  • CLI: --coverage.allowExternal, --coverage.allowExternal=false

Proje root dizini dışındaki dosyaların da kapsam analizine dahil edilmesini sağlar.

coverage.skipFull ​

  • Tür: boolean
  • Varsayılan: false
  • Sağlayıcılar için kullanılabilir: 'v8' | 'istanbul'
  • CLI: --coverage.skipFull, --coverage.skipFull=false

%100 ifade, dal ve fonksiyon kapsamına sahip dosyaları raporda gösterme.

coverage.perFile ​

  • Tür: boolean
  • Varsayılan: false
  • Sağlayıcılar için kullanılabilir: 'v8' | 'istanbul'
  • CLI: --coverage.perFile, --coverage.perFile=false

Dosya başına eşikleri kontrol edin. Gerçek eşikler için lines, functions, branches ve statements bölümlerine bakın.

coverage.thresholdAutoUpdate ​

  • Tür: boolean
  • Varsayılan: false
  • Sağlayıcılar için kullanılabilir: 'v8' | 'istanbul'
  • CLI: --coverage.thresholdAutoUpdate=<boolean>

Mevcut kod kapsamı, yapılandırılmış eşik değerlerinin üzerindeyse, lines, functions, branches ve statements eşik değerlerini otomatik olarak yapılandırma dosyasına günceller. Bu seçenek, kapsam iyileştirildiğinde eşiklerin korunmasına yardımcı olur.

coverage.lines ​

  • Tür: number
  • Sağlayıcılar için kullanılabilir: 'v8' | 'istanbul'
  • CLI: --coverage.lines=<number>

Satırlar için eşik. Daha fazla bilgi için istanbul belgelerine bakın.

coverage.functions ​

  • Tür: number
  • Sağlayıcılar için kullanılabilir: 'v8' | 'istanbul'
  • CLI: --coverage.functions=<number>

Fonksiyonlar için eşik. Daha fazla bilgi için istanbul belgelerine bakın.

coverage.branches ​

  • Tür: number
  • Sağlayıcılar için kullanılabilir: 'v8' | 'istanbul'
  • CLI: --coverage.branches=<number>

Dallar için eşik. Daha fazla bilgi için istanbul belgelerine bakın.

coverage.statements ​

  • Tür: number
  • Sağlayıcılar için kullanılabilir: 'v8' | 'istanbul'
  • CLI: --coverage.statements=<number>

İfadeler için eşik. Daha fazla bilgi için istanbul belgelerine bakın.

coverage.100 ​

  • Tür: boolean
  • Varsayılan: false
  • Sağlayıcılar için kullanılabilir: 'v8' | 'istanbul'
  • CLI: --coverage.100, --coverage.100=false

--coverage.lines 100 --coverage.functions 100 --coverage.branches 100 --coverage.statements 100 için kısayol.

coverage.ignoreClassMethods ​

  • Tür: string[]
  • Varsayılan: []
  • Sağlayıcılar için kullanılabilir: 'istanbul'
  • CLI: --coverage.ignoreClassMethods=<method>

Kapsam için yoksayılacak sınıf metot adlarını belirtin. Daha fazla bilgi için istanbul belgelerine bakın.

coverage.watermarks ​

  • Tür:
ts
{
  statements?: [number, number],
  functions?: [number, number],
  branches?: [number, number],
  lines?: [number, number]
}
  • Varsayılan:
ts
{
  statements: [50, 80],
  functions: [50, 80],
  branches: [50, 80],
  lines: [50, 80]
}
  • Sağlayıcılar için kullanılabilir: 'v8' | 'istanbul'

İfadeler, satırlar, dallar ve fonksiyonlar için eşik değerleri (filigranlar). Daha fazla bilgi için istanbul belgelerine bakın.

coverage.customProviderModule ​

  • Tür: string
  • Sağlayıcılar için kullanılabilir: 'custom'
  • CLI: --coverage.customProviderModule=<path or module name>

Özel kapsam sağlayıcı modülü için modül adını veya dosya yolunu belirtir. Daha fazla bilgi için Rehber - Özel Kapsam Sağlayıcısı bölümüne bakın.

testNamePattern* ​

  • Tür: string | RegExp
  • CLI: -t <pattern>, --testNamePattern=<pattern>, --test-name-pattern=<pattern>

Adları belirtilen kalıpla eşleşen testleri çalıştırır. Bu özelliğe OnlyRunThis değeri atanırsa, adında OnlyRunThis kelimesi geçmeyen testler atlanır.

js
import { expect, test } from 'vitest';

// çalıştırılacak
test('OnlyRunThis', () => {
  expect(true).toBe(true);
});

// atlanacak
test('doNotRun', () => {
  expect(true).toBe(true);
});

open* ​

  • Tür: boolean
  • Varsayılan: false
  • CLI: --open, --open=false

Vitest UI'ı aç (Geliştirme Aşamasında)

api ​

  • Tür: boolean | number
  • Varsayılan: false
  • CLI: --api, --api.port, --api.host, --api.strictPort

Belirtilen portu dinler ve API hizmeti sunar. True olarak ayarlandığında, varsayılan bağlantı noktası 51204'tür.

browser ​

  • Tür: { enabled?, name?, provider?, headless?, api?, slowHijackESM? }
  • Varsayılan: { enabled: false, headless: process.env.CI, api: 63315 }
  • Sürüm: Vitest 0.29.4'ten beri
  • CLI: --browser, --browser=<name>, --browser.name=chrome --browser.headless

Vitest testlerinin bir tarayıcıda çalıştırılmasını sağlar. Testleri çalıştırmak için varsayılan olarak WebdriverIO kullanılır, ancak browser.provider seçeneğiyle yapılandırılabilir.

NOT

Gerçek bir tarayıcıda test etme hakkında rehber sayfasında daha fazla bilgi edinin.

WARNING

Bu deneysel bir özelliktir. Kırıcı değişiklikler semver'i takip etmeyebilir, lütfen kullanırken Vitest'in sürümünü sabitleyin.

browser.enabled ​

  • Tür: boolean
  • Varsayılan: false
  • CLI: --browser, --browser.enabled=false

Tüm testlerin varsayılan olarak bir tarayıcıda çalıştırılmasını sağlar. poolMatchGlobs seçeneğiyle geçersiz kılınabilir.

browser.name ​

  • Tür: string
  • CLI: --browser=safari

Tüm testleri belirli bir tarayıcıda çalıştırın. Farklı sağlayıcılarda olası seçenekler:

  • webdriverio: firefox, chrome, edge, safari
  • playwright: firefox, webkit, chromium
  • özel: sağlayıcıya geçirilecek herhangi bir dize

browser.headless ​

  • Tür: boolean
  • Varsayılan: process.env.CI
  • CLI: --browser.headless, --brower.headless=false

Tarayıcının headless (başsız) modda çalıştırılmasını sağlar. Vitest'i CI'da çalıştırıyorsanız, varsayılan olarak etkinleştirilir.

browser.api ​

  • Tür: number | { port?, strictPort?, host? }
  • Varsayılan: 63315
  • CLI: --browser.api=63315, --browser.api.port=1234, --browser.api.host=example.com

Tarayıcıda çalışacak kodları sunan Vite sunucusunun ayarlarını yapılandırır. test.api seçeneğini etkilemez.

browser.provider ​

  • Tür: 'webdriverio' | 'playwright' | string
  • Varsayılan: 'webdriverio'
  • CLI: --browser.provider=playwright

Tarayıcı testleri çalıştırılırken kullanılacak sağlayıcının dosya yolu veya adı. Vitest, webdriverio (varsayılan) ve playwright olmak üzere iki sağlayıcı sunar. Özel sağlayıcılar default olarak dışa aktarılmalı ve aşağıdaki arayüze sahip olmalıdır:

ts
export interface BrowserProvider {
  name: string;
  getSupportedBrowsers(): readonly string[];
  initialize(ctx: Vitest, options: { browser: string }): Awaitable<void>;
  openPage(url: string): Awaitable<void>;
  close(): Awaitable<void>;
}

WARNING

Bu, kütüphane geliştiricileri için ileri düzey bir API'dir. Yalnızca testleri bir tarayıcıda çalıştırmanız gerekiyorsa, browser seçeneğini kullanın.

browser.slowHijackESM ​

  • Tür: boolean
  • Varsayılan: true
  • Versiyon: Vitest 0.31.0'dan beri

Vitest, Node.js'de testler çalıştırılırken vi.mock sözdizimi ile modülleri kolayca taklit etmek için kendi modül çözümlemesini kullanır. Ancak, tarayıcıda ES modül çözümlemesini birebir aynı şekilde uygulamak kolay değildir. Bu nedenle, tarayıcının bu dosyaları kullanabilmesi için öncelikle dönüştürmemiz gerekir.

Bu seçeneğin Node.js'de çalışan testler üzerinde herhangi bir etkisi yoktur.

Bu seçenek, tarayıcıda çalışırken varsayılan olarak etkindir. vi.spyOn ile ES modüllerini izlemeye güvenmiyorsanız ve vi.mock kullanmıyorsanız, performansı bir miktar artırmak için bu özelliği devre dışı bırakabilirsiniz.

clearMocks ​

  • Tür: boolean
  • Varsayılan: false

Her testten önce tüm sahte fonksiyonlar üzerinde .mockClear() fonksiyonunu çağırır. Bu, sahte fonksiyonların geçmişini temizler, ancak uygulamasını varsayılan haline getirmez.

mockReset ​

  • Tür: boolean
  • Varsayılan: false

Her testten önce tüm sahte fonksiyonlar üzerinde .mockReset() fonksiyonunu çağırır. Bu, sahte fonksiyonların geçmişini temizler ve uygulamasını boş bir fonksiyona döndürür (undefined döndürür).

restoreMocks ​

  • Tür: boolean
  • Varsayılan: false

Her testten önce tüm sahte fonksiyonlar üzerinde .mockRestore() fonksiyonunu çağırır. Bu, sahte fonksiyonların geçmişini temizler ve uygulamasını orijinal haline sıfırlar.

unstubEnvs ​

  • Tür: boolean
  • Varsayılan: false
  • Versiyon: Vitest 0.26.0'dan beri

Her testten önce vi.unstubAllEnvs fonksiyonunu çağırır.

unstubGlobals ​

  • Tür: boolean
  • Varsayılan: false
  • Versiyon: Vitest 0.26.0'dan beri

Her testten önce vi.unstubAllGlobals fonksiyonunu çağırır.

testTransformMode ​

  • Tür: { web?, ssr? }
  • Versiyon: Vitest 0.34.0'dan beri

Bu ayar, bir test içinde kullanılan ve belirtilen glob deseniyle eşleşen modüllerin nasıl dönüştürüleceğini belirler. Varsayılan olarak, ortama bağlıdır. Örneğin, JSDOM ortamına sahip testler tüm dosyaları ssr: false bayrağıyla işler ve Node ortamına sahip testler tüm modülleri ssr: true ile işler.

testTransformMode.ssr ​

  • Tür: string[]
  • Varsayılan: []

Belirtilen testlerin içindeki tüm modüller için sunucu tarafı render (SSR) dönüştürme hattını kullanın. Vite eklentileri, bu dosyaları işlerken ssr: true bayrağını alır.

testTransformMode.web ​

  • Tür: string[]
  • Varsayılan: []

Önce normal bir dönüştürme hattı (tarayıcıyı hedefleyen) uygulayın, ardından kodu Node'da çalıştırmak için bir SSR yeniden yazma işlemi yapın. Vite eklentileri, bu dosyaları işlerken ssr: false bayrağını alır.

snapshotFormat* ​

  • Tür: PrettyFormatOptions

Anlık görüntü (snapshot) testi için biçimlendirme seçenekleri. Bu seçenekler pretty-format paketine aktarılır.

resolveSnapshotPath* ​

  • Tür: (testPath: string, snapExtension: string) => string
  • Varsayılan: Anlık görüntü (snapshot) dosyalarını __snapshots__ dizininde saklar

Varsayılan anlık görüntü (snapshot) yolunu geçersiz kılar. Örneğin, anlık görüntüleri (snapshot) test dosyalarının yanında saklamak için:

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

export default defineConfig({
  test: {
    resolveSnapshotPath: (testPath, snapExtension) => testPath + snapExtension,
  },
});

allowOnly ​

  • Tür: boolean
  • Varsayılan: false
  • CLI: --allowOnly, --allowOnly=false

Yalnızca (only) olarak işaretlenmiş testlerin ve test kümelerinin çalışmasına izin ver.

dangerouslyIgnoreUnhandledErrors* ​

  • Tür: boolean
  • Varsayılan: false
  • CLI: --dangerouslyIgnoreUnhandledErrors --dangerouslyIgnoreUnhandledErrors=false

Meydana gelen işlenmemiş hataları yok sayın.

passWithNoTests* ​

  • Tür: boolean
  • Varsayılan: false
  • CLI: --passWithNoTests, --passWithNoTests=false

Vitest, hiçbir test bulunamazsa başarısız olarak sonuçlanmaz.

logHeapUsage ​

  • Tür: boolean
  • Varsayılan: false
  • CLI: --logHeapUsage, --logHeapUsage=false

Her testten sonra yığın kullanımını göster. Bellek sızıntılarını ayıklamak için kullanışlıdır.

css ​

  • Tür: boolean | { include?, exclude?, modules? }

CSS'nin işlenip işlenmeyeceğini yapılandırın. Eğer CSS dosyaları hariç tutulursa, sonraki işlemlerin atlanması için bu dosyalar boş dizelerle değiştirilir. CSS Modülleri, çalışma zamanını etkilememek için bir vekil (proxy) döndürecektir.

css.include ​

  • Tür: RegExp | RegExp[]
  • Varsayılan: []

Gerçek CSS döndürmesi gereken ve Vite hattı tarafından işlenecek dosyalar için RegExp deseni.

TIP

Tüm CSS dosyalarını işlemek için /.+/ kullanın.

css.exclude ​

  • Tür: RegExp | RegExp[]
  • Varsayılan: []

Boş bir CSS dosyası döndürecek dosyalar için RegExp deseni.

css.modules ​

  • Tür: { classNameStrategy? }
  • Varsayılan: {}

css.modules.classNameStrategy ​

  • Tür: 'stable' | 'scoped' | 'non-scoped'
  • Varsayılan: 'stable'

CSS dosyalarını işlemeye karar verirseniz, CSS modüllerinin içindeki sınıf adlarının kapsamlı (scoped) olup olmayacağını yapılandırabilirsiniz. Aşağıdaki seçeneklerden birini seçebilirsiniz:

  • stable: Sınıf adları _${name}_${hashedFilename} olarak oluşturulur. Bu, CSS içeriği değişirse oluşturulan sınıfın aynı kalacağı, ancak dosyanın adı değiştirilirse veya dosya başka bir klasöre taşınırsa değişeceği anlamına gelir. Bu ayar, anlık görüntü (snapshot) özelliğini kullanıyorsanız kullanışlıdır.
  • scoped: Sınıf adları her zamanki gibi oluşturulur, varsa css.modules.generateScopeName yöntemine saygı gösterilir ve CSS işleme etkinleştirilir. Varsayılan olarak, dosya adı _${name}_${hash} olarak oluşturulur; burada hash, dosya adını ve dosyanın içeriğini içerir.
  • non-scoped: Sınıf adları karma hale getirilmez.

WARNING

Varsayılan olarak, Vitest bir vekil (proxy) dışarı aktarır ve CSS Modüllerini işlemeyi atlar. Sınıflarınızdaki CSS özelliklerine güveniyorsanız, include seçeneğini kullanarak CSS işlemeyi etkinleştirmeniz gerekir.

maxConcurrency ​

  • Tür: number
  • Varsayılan: 5

test.concurrent ile işaretlenmiş aynı anda çalışmasına izin verilen test sayısı.

Bu sınırın üzerindeki testler, uygun bir yer açıldığında çalışmak üzere sıraya alınır.

cache* ​

  • Tür: false | { dir? }

Vitest önbellek politikasını yapılandırma seçenekleri. Şu anda Vitest, daha uzun süren ve başarısız testleri ilk çalıştırmak için test sonuçları için önbelleği saklar.

cache.dir ​

  • Tür: string
  • Varsayılan: node_modules/.vitest

Önbellek dizininin yolu.

sequence ​

  • Tür: { sequencer?, shuffle?, seed?, hooks?, setupFiles? }

Testlerin nasıl sıralanması gerektiğine ilişkin seçenekler.

Nokta gösterimiyle CLI'ye sıra seçenekleri sağlayabilirsiniz:

sh
npx vitest --sequence.shuffle --sequence.seed=1000

sequence.sequencer* ​

  • Tür: TestSequencerConstructor
  • Varsayılan: BaseSequencer

Testleri parçalamak ve sıralamak için kullanılan yöntemleri içeren özel bir sınıf. Yalnızca sort ve shard yöntemlerinden birini yeniden tanımlamanız gerekiyorsa vitest/node'dan BaseSequencer'ı genişletebilirsiniz, ancak her ikisi de mevcut olmalıdır.

Parçalama, sıralamadan önce gerçekleşir ve yalnızca --shard seçeneği sağlanırsa geçerlidir.

sequence.shuffle ​

  • Tür: boolean
  • Varsayılan: false
  • CLI: --sequence.shuffle, --sequence.shuffle=false

Testlerin rastgele çalışmasını istiyorsanız, bu seçenekle veya CLI argümanı --sequence.shuffle ile etkinleştirebilirsiniz.

Vitest genellikle testleri sıralamak için önbelleği kullanır, bu nedenle uzun süren testler daha erken başlar - bu, testlerin daha hızlı çalışmasını sağlar. Testleriniz rastgele sırada çalışırsa, bu performans iyileştirmesini kaybedersiniz, ancak bu, daha önceki bir çalıştırmaya bağımlı olan testleri tespit etmeye yardımcı olabilir.

sequence.concurrent ​

  • Tür: boolean
  • Varsayılan: false
  • CLI: --sequence.concurrent, --sequence.concurrent=false
  • Versiyon: Vitest 0.32.2'den beri

Testlerin paralel çalışmasını istiyorsanız, bu seçenekle veya CLI argümanı --sequence.concurrent ile etkinleştirebilirsiniz.

sequence.seed* ​

  • Tür: number
  • Varsayılan: Date.now()
  • CLI: --sequence.seed=1000

Testler rastgele sırada çalışıyorsa, rastgeleleştirme çekirdeğini ayarlar.

sequence.hooks ​

  • Tür: 'stack' | 'list' | 'parallel'
  • Varsayılan: 'parallel'
  • CLI: --sequence.hooks=<value>

Kancaların yürütülme sırasını değiştirir.

  • stack, "sonra" kancalarını ters sırada sıralar, "önce" kancaları tanımlandıkları sırada çalışır
  • list, tüm kancaları tanımlandıkları sırada sıralar
  • parallel, kancaları tek bir grupta paralel olarak çalıştırır (üst test kümelerindeki kancalar yine de mevcut test kümesinin kancalarından önce çalışır)

sequence.setupFiles ​

  • Tür: 'list' | 'parallel'
  • Varsayılan: 'parallel'
  • CLI: --sequence.setupFiles=<value>
  • Versiyon: Vitest 0.29.3'ten beri

Kurulum dosyalarının yürütülme sırasını değiştirir.

  • list, kurulum dosyalarını tanımlandıkları sırada çalıştırır
  • parallel, kurulum dosyalarını paralel olarak çalıştırır

typecheck ​

Tür denetimi test ortamını yapılandırma seçenekleri.

typecheck.checker ​

  • Tür: 'tsc' | 'vue-tsc' | string
  • Varsayılan: tsc

Tür denetimi için hangi araçların kullanılacağı. Vitest, türüne göre değişen parametrelerle bir işlem başlatarak ayrıştırmayı kolaylaştırır. Denetleyici, tsc ile aynı çıktı biçimini uygulamalıdır.

Tür denetleyicisini kullanmak için bir paket yüklemeniz gerekir:

  • tsc, typescript paketini gerektirir
  • vue-tsc, vue-tsc paketini gerektirir

Ayrıca, tsc --noEmit --pretty false ile aynı çıktıyı üreten özel bir ikili veya komut adına bir yol da aktarabilirsiniz.

typecheck.include ​

  • Tür: string[]
  • Varsayılan: ['**/*.{test,spec}-d.?(c|m)[jt]s?(x)']

Test dosyaları olarak kabul edilmesi gereken dosyalar için Glob deseni

typecheck.exclude ​

  • Tür: string[]
  • Varsayılan: ['**/node_modules/**', '**/dist/**', '**/cypress/**', '**/.{idea,git,cache,output,temp}/**']

Test dosyaları olarak kabul edilmemesi gereken dosyalar için Glob deseni

typecheck.allowJs ​

  • Tür: boolean
  • Varsayılan: false

@ts-check yorumuna sahip JS dosyalarını kontrol edin. Tsconfig'de etkinleştirilmişse, bu onu geçersiz kılmaz.

typecheck.ignoreSourceErrors ​

  • Tür: boolean
  • Varsayılan: false

Vitest, test dosyalarının dışında hatalar bulursa başarısız olarak sonuçlanmaz. Bu ayar, test dosyaları dışındaki hataların gösterilmesini engeller.

Varsayılan olarak, Vitest kaynak hatası bulursa, test grubu başarısız olur.

typecheck.tsconfig ​

  • Tür: string
  • Varsayılan: en yakın tsconfig.json dosyasını bulmaya çalışır

Proje köküne göre özel tsconfig dosyasına giden yol.

slowTestThreshold* ​

  • Tür: number
  • Varsayılan: 300

Bir testin yavaş kabul edildiği ve sonuçlarda bu şekilde raporlandığı milisaniye sayısı.

chaiConfig ​

  • Tür: { includeStack?, showDiff?, truncateThreshold? }
  • Varsayılan: { includeStack: false, showDiff: true, truncateThreshold: 40 }
  • Versiyon: Vitest 0.30.0'dan beri

Chai yapılandırmasına eşdeğerdir.

chaiConfig.includeStack ​

  • Tür: boolean
  • Varsayılan: false

Yığın izlemenin (stack trace) Assertion hatası mesajına dahil edilip edilmeyeceğini etkiler. Varsayılan false, hata mesajındaki yığın izlemeyi gizler.

chaiConfig.showDiff ​

  • Tür: boolean
  • Varsayılan: true

showDiff bayrağının atılan AssertionErrors'a dahil edilip edilmeyeceğini etkiler. false her zaman false olacaktır; iddia (assertion) bir farkın gösterilmesini talep ettiğinde true değerini alır.

chaiConfig.truncateThreshold ​

  • Tür: number
  • Varsayılan: 40

Assertion hatalarındaki gerçek ve beklenen değerler için uzunluk eşiğini ayarlar. Bu eşik aşılırsa, örneğin büyük veri yapıları için, değer [ Array(3) ] veya { Object (prop1, prop2) } gibi bir şeyle değiştirilir. Tamamen kesmeyi devre dışı bırakmak istiyorsanız 0 olarak ayarlayın.

Bu yapılandırma seçeneği, test.each başlıklarındaki ve assertion hata mesajının içindeki değerlerin kesilmesini etkiler.

bail ​

  • Tür: number
  • Varsayılan: 0
  • CLI: --bail=<value>
  • Versiyon: Vitest 0.31.0'dan beri

Belirli sayıda test başarısız olduğunda test yürütmesini durdurun.

Bu özellik, yalnızca başarılı derlemelerle ilgilenilen ve hatalar oluştuğunda testlerin erken durdurulmasının istendiği CI ortamları için faydalıdır. bail seçeneği, hatalar oluştuğunda daha fazla test çalıştırmasını engelleyerek CI çalıştırmalarını hızlandırmak için kullanılabilir.

retry ​

  • Tür: number
  • Varsayılan: 0
  • CLI: --retry=<value>
  • Versiyon: Vitest 0.32.3'ten beri

Başarısız olursa testi belirtilen sayıda tekrar çalıştırın.

onConsoleLog ​

  • Tür: (log: string, type: 'stdout' | 'stderr') => false | void

Testlerdeki console.log için özel işleyici. false döndürürseniz, Vitest günlüğü konsola yazdırmaz.

Üçüncü taraf kitaplıklardan gelen günlükleri filtrelemek için yararlı olabilir.

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

export default defineConfig({
  test: {
    onConsoleLog(log: string, type: 'stdout' | 'stderr'): boolean | void {
      if (log === 'message from third party library' && type === 'stdout')
        return false;
    },
  },
});

diff ​

  • Tür: string
  • CLI: --diff=<value>
  • Versiyon: Vitest 0.34.5'ten beri

Fark çıktısını özelleştirmek için kullanılacak bir yapılandırma dosyasının yolu.

ts
import type { DiffOptions } from 'vitest';
import c from 'picocolors';

export default {
  aIndicator: c.bold('--'),
  bIndicator: c.bold('++'),
  omitAnnotationLines: true,
} satisfies DiffOptions;
ts
import { defineConfig } from 'vitest/config';

export default defineConfig({
  test: {
    diff: './vitest.diff.ts',
  },
});
Pager
Önceki sayfaassertType

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

Copyright (c) 2021-Present Vitest Team

https://v0.vitest.dev/config/

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

Copyright (c) 2021-Present Vitest Team