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.tsoluşturun; bu, daha yüksek önceliğe sahip olacak vevite.config.tsdosyasındaki yapılandırmayı geçersiz kılacaktır.- CLI'ya
--configseçeneğini geçirin, örneğinvitest --config ./path/to/vitest.config.ts. vite.config.tsiçinde farklı yapılandırmayı koşullu olarak uygulamak içinprocess.env.VITESTveyadefineConfigüzerindekimodeözelliğini kullanın (test/benchmarkolarak 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:
/// <reference types="vitest" />
import { defineConfig } from 'vite';
export default defineConfig({
test: {
// ...
},
});vitest/config'ten defineConfig kullanıyorsanız şunu izleyin:
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
// ...
},
});Gerekirse Vitest'in varsayılan seçeneklerini aşağıdaki gibi genişletebilirsiniz:
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:
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:
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.
aliasyapı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 takdirdefalse
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 functionVarsayı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:
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
nodeveya benchmark'lar çalıştırılırkenbenchmark
Ö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.
// 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.
// 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.
// 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:
/**
* @vitest-environment jsdom
*/
test('bu test dosyasında jsdom kullan', () => {
const element = document.createElement('div');
expect(element).not.toBeNull();
});Tek satır yorum stili:
// @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:
/**
* @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:
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:
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:
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ı (testsuitesetiket adınıVITEST_JUNIT_SUITE_NAMEortam değişkeni ile,classnameetiket özelliğini iseVITEST_JUNIT_CLASSNAMEile yapılandırabilirsiniz).'json'- Basit bir JSON özeti verir.'html'-@vitest/uitabanlı 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:
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- MegabaytMiB- MebibaytG/GB- GigabaytGiB- 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:
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.
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:
npx vitest --coverage.enabled --coverage.provider=istanbul --coverage.allWARNING
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:
[
'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(Vitest0.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:
{
statements?: [number, number],
functions?: [number, number],
branches?: [number, number],
lines?: [number, number]
}- Varsayılan:
{
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.
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,safariplaywright: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:
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:
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, varsacss.modules.generateScopeNameyö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:
npx vitest --sequence.shuffle --sequence.seed=1000sequence.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ışırlist, tüm kancaları tanımlandıkları sırada sıralarparallel, 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ırparallel, 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,typescriptpaketini gerektirirvue-tsc,vue-tscpaketini 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.
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.
import type { DiffOptions } from 'vitest';
import c from 'picocolors';
export default {
aIndicator: c.bold('--'),
bIndicator: c.bold('++'),
omitAnnotationLines: true,
} satisfies DiffOptions;import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
diff: './vitest.diff.ts',
},
});