Vitest'in Yapılandırılması
Vitest yapılandırma dosyası oluşturmak için kılavuzu inceleyin. Devam etmeden önce Vitest yapılandırma çözümleme mekanizmasını anladığınızdan emin olun.
WARNING
Burada listelenen tüm seçenekler, yapılandırma dosyasındaki bir test özelliği içinde yer alır:
export default defineConfig({
test: {
exclude: [],
},
});TIP
Aşağıdaki seçeneklere ek olarak, Vite'den herhangi bir yapılandırma seçeneğini de kullanabilirsiniz. Örneğin, global değişkenleri tanımlamak için define veya takma adları tanımlamak için resolve.alias kullanabilirsiniz.
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)'] - CLI:
vitest [...include],vitest **/*.test.js
Test dosyalarınızla eşleşen glob desenlerinin listesidir.
NOT
Kapsam kullanıldığında Vitest, test dosyalarını include desenlerini kapsamın varsayılan exclude desenlerine otomatik olarak ekler. Bkz. coverage.exclude.
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.*'] - CLI:
vitest --exclude "**/excluded-file"
Test dosyalarınızdan hariç tutulacak glob desenlerinin listesidir.
WARNING
Bu seçenek, kapsamı etkilemez. Kapsam raporundan belirli dosyaları kaldırmanız gerekiyorsa, coverage.exclude kullanın.
Bu seçenek, bir CLI bayrağı ile belirtilirse yapılandırmanızı tamamen geçersiz kılmaz. --exclude bayrağı aracılığıyla eklenen tüm glob desenleri, yapılandırmanın exclude bölümüne eklenecektir.
includeSource
- Tür:
string[] - Varsayılan:
[]
Kaynak kodun içindeki test dosyalarını bulmak için glob desenlerini belirtin.
Tanımlandığında, Vitest import.meta.vitest içeren tüm eşleşen dosyaları çalıştırır.
server
- Tür:
{ sourcemap?, deps?, ... }
Vite-Node sunucu seçenekleri.
server.sourcemap
- Tür:
'inline' | boolean - Varsayılan:
'inline'
Modüllere satır içi kaynak haritaları ekler.
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ülmüş modülleri dosya sistemine kaydeder. Bir dize geçirilirse, belirtilen yola kaydedecektir.
server.debug.loadDumppedModules
- Tür:
boolean
Eğer varsa, dışa aktarılmış modülleri dosya sisteminden okur. 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ümleme ayarları.
server.deps.external
- Tür:
(string | RegExp)[] - Varsayılan:
[/\/node_modules\//]
Dışsallaştırma, Vite'nin paketi doğrudan Node'a aktaracağı anlamına gelir. Dışsallaştırılmış bağımlılıklara Vite'nin 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 dışsallaştırılır.
Bu seçenekler, paket adlarını node_modules dizininde veya deps.moduleDirectories içinde belirtildiği gibi kabul eder. Örneğin, packages/some-name içinde bulunan @company/some-name paketi some-name olarak belirtilmeli ve packages deps.moduleDirectories'e dahil edilmelidir. Temel olarak, Vitest her zaman gerçek paket adını değil, dosya yolunu kontrol eder.
Normal ifade kullanılırsa, Vitest bunu paket adı yerine dosya yolu üzerinde uygular.
server.deps.inline
- Tür:
(string | RegExp)[] | true - Varsayılan:
[]
Vite, satır içi modülleri işler. Bu, ESM formatında .js dosyaları içeren (Node'un işleyemediği) paketler için kullanışlıdır.
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ışır. Bir bağımlılığın hatalı bir ESM dosyası sunması durumunda faydalı olabilir.
Bir paketin ESM ve CJS modunda farklı mantığı varsa bu potansiyel olarak bazı yanlış hizalamalara neden olabilir.
server.deps.cacheDir
- Tür
string - Varsayılan:
'node_modules/.vite'
Önbellek dosyalarının saklanacağı dizin.
deps
- Tür:
{ optimizer?, ... }
Bağımlılık çözümleme ayarları.
deps.optimizer
- Tür:
{ ssr?, web? } - Ayrıca bakınız: Bağımlılık Optimizasyon Seçenekleri
Bağımlılık optimizasyonunu etkinleştirir. Çok sayıda testiniz varsa bu performansı artırabilir.
Vitest, include içinde listelenen harici bir 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 yaklaşımın avantajları:
- Ç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ın içe aktarılması maliyetlidir çünkü bunlar Node.js ortamında çalışmak üzere tasarlanmamıştır.
aliasyapılandırmanız, paketlenmiş bağımlılıklar içinde de geçerli olacaktır.- Testlerinizdeki kod, tarayıcıda çalışmasına daha benzer bir ortamda çalışmasını sağlar.
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 tarafından 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 listelenmişlerse, aynı seçenekleri include'dan otomatik olarak kaldırır.
TIP
Kod cacheDir veya test.cache.dir dizininde saklandığından, hata ayıklama için node_modules kodunuzu düzenleyemezsiniz. 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:
false
Bağımlılık optimizasyonunu etkinleştirir.
deps.web
- Tür:
{ transformAssets?, ... }
Dönüştürme modu web olarak ayarlandığında harici dosyalara uygulanan seçenekler. 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 dışsallaştırılır, ancak bu seçenekler server.deps.external içindeki dosyaları da etkiler.
deps.web.transformAssets
- Tür:
boolean - Varsayılan:
true
Vitest, .png, .svg, .jpg gibi varlık dosyalarını Vite'nin tarayıcıdaki gibi işler ve çözümler.
Sorgu belirtilmemişse, bu modül varlığın dosya yolunu varsayılan export olarak döndürür.
deps.web.transformCss
- Tür:
boolean - Varsayılan:
true
Vitest, .css, .scss, .sass gibi CSS dosyalarını Vite'nin tarayıcıdaki gibi işler ve çözümler.
CSS dosyaları css seçenekleriyle devre dışı bırakılırsa, bu seçenek yalnızca ERR_UNKNOWN_FILE_EXTENSION hatalarını susturacaktır.
deps.web.transformGlobPattern
- Tür:
RegExp | RegExp[] - Varsayılan:
[]
Dönüştürülecek harici dosyaları eşleştirmek için kullanılacak regex deseni.
Varsayılan olarak, node_modules içindeki dosyalar dışsallaştırılır 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.
deps.interopDefault
- Tür:
boolean - Varsayılan:
true
CJS modüllerinin default export'larını named export olarak yorumlar. 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 ayar vi.mock 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 çözmeye çalışacaktır.
Bu seçenek, bağımlılıkları dışsallaştırırken bir dosyanın modül olarak kabul edilip edilmeyeceğini de etkileyecektir. Varsayılan olarak Vitest, harici modülleri Vite'nin dönüştürme adımını atlayarak doğrudan Node.js ile içe aktarır.
Bu seçeneği ayarlamak varsayılanı geçersiz kılar. node_modules dizinini de aramak istiyorsanız, bu dizini diğer dizinlerle birlikte belirtmelisiniz:
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 benchmarklar çalıştırılırkenbenchmark
Özel bir test çalıştırıcısının 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ı için glob desenlerini belirtin.
benchmark.exclude
- Tür:
string[] - Varsayılan:
['node_modules', 'dist', '.idea', '.git', '.cache']
Benchmark test dosyaları için glob'ları hariç tutun.
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 içinde import.meta.vitest bulunan 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
benchmark.outputJson lehine kullanımdan kaldırıldı.
benchmark.outputJson
- Tür:
string | undefined - Varsayılan:
undefined
Benchmark sonuçlarının saklanacağı dosya yolu, daha sonra --compare seçeneği için kullanılabilir.
Örneğin:
# ana dalın sonucunu kaydedin
git checkout main
vitest bench --outputJson main.json
# bir dalı değiştirin ve ana dala karşı karşılaştırın
git checkout feature
vitest bench --compare main.jsonbenchmark.compare
- Tür:
string | undefined - Varsayılan:
undefined
Mevcut çalıştırmalarla karşılaştırma yapmak için kullanılacak önceki benchmark sonuçlarının dosya yolu.
alias
- Tür:
Record<string, string> | Array<{ find: string | RegExp, replacement: string, customResolver?: ResolverFunction | ResolverObject }>
Testler sırasında kullanılacak özel alias'lar tanımlar. resolve.alias'tan takma adlarla birleştirileceklerdir.
WARNING
Vitest testleri çalıştırmak için Vite'nin SSR altyapısını kullanır, ancak bu bazı sınırlamalara sahiptir.
- Takma adlar yalnızca satır içine alınmış (varsayılan olarak tüm kaynak kodu satır içidir) bir modül tarafından doğrudan
importifadesiyle içe aktarılan modülleri etkiler. - Vitest,
requireçağrılarını takma adlandırmayı desteklemez. - Harici bir bağımlılığı takma adlandırıyorsanız (örneğin,
reactyerinepreactkullanıyorsanız), bu değişikliğin haricileştirilmiş bağımlılıklar için de geçerli olması için doğrudannode_modulesiçindeki ilgili paketleri takma adlandırmanız gerekebilir. Hem Yarn hem de pnpmnpm:öneki aracılığıyla takma adlandırmayı destekler.
globals
- Tür:
boolean - Varsayılan:
false - CLI:
--globals,--globals=false
Varsayılan olarak vitest netlik sağlamak için global API'leri sunmaz. Jest gibi API'leri global olarak kullanmayı tercih ederseniz, CLI'ye --globals seçeneğini geçirebilir veya yapılandırmada globals: true ekleyebilirsiniz.
// vitest.config.ts
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
globals: true,
},
});TypeScript'te global API'leri kullanabilmek için, tsconfig.json dosyanızdaki types dizisine vitest/globals ekleyin.
// tsconfig.json
{
"compilerOptions": {
"types": ["vitest/globals"]
}
}Projenizde halihazırda unplugin-auto-import kullanıyorsanız, bu API'leri otomatik olarak içe aktarmak için doğrudan da kullanabilirsiniz.
// vitest.config.ts
import { defineConfig } from 'vitest/config';
import AutoImport from 'unplugin-auto-import/vite';
export default defineConfig({
plugins: [
AutoImport({
imports: ['vitest'],
dts: true, // TypeScript bildirimi oluştur
}),
],
});environment
- Tür:
'node' | 'jsdom' | 'happy-dom' | 'edge-runtime' | string - Varsayılan:
'node' - CLI:
--environment=<env>
Testler için kullanılacak ortamı belirtir. Vitest'in varsayılan ortamı Node.js'dir. Bir web uygulaması geliştiriyorsanız, jsdom veya happy-dom kullanarak tarayıcı benzeri bir ortam kullanabilirsiniz. Edge fonksiyonları oluşturuyorsanız, edge-runtime ortamını kullanabilirsiniz.
TIP
Ortamı taklit etmeden tarayıcıda entegrasyon veya birim testleri çalıştırmak için Tarayıcı Modunu da kullanabilirsiniz.
Bir dosyadaki tüm testler için farklı bir ortam belirtmek için, dosyanın en üstüne bir @vitest-environment docblock'u veya yorumu ekleyebilirsiniz:
Docblock stili:
/**
* @vitest-environment jsdom
*/
test('use jsdom in this test file', () => {
const element = document.createElement('div');
expect(element).not.toBeNull();
});Yorum stili:
// @vitest-environment happy-dom
test('use happy-dom in this test file', () => {
const element = document.createElement('div');
expect(element).not.toBeNull();
});Jest ile uyumluluk için @jest-environment da kullanılabilir:
/**
* @jest-environment jsdom
*/
test('use jsdom in this test file', () => {
const element = document.createElement('div');
expect(element).not.toBeNull();
});Vitest'i --isolate=false bayrağıyla çalıştırıyorsanız, testleriniz şu sırada çalıştırılır: node, jsdom, happy-dom, edge-runtime, custom environments (özel ortamlar). Bu, aynı ortama sahip testlerin gruplandırıldığı, ancak yine de sıralı olarak çalıştırıldığı anlamına gelir.
0.23.0 sürümünden itibaren, özel bir ortam da tanımlayabilirsiniz. Yerleşik olmayan bir ortam kullanıldığı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, yalnızca genişletmek istemeniz durumunda vitest/environments girişi aracılığıyla builtinEnvironments'ı da sunar. Ortamları genişletme hakkında kılavuzumuzda daha fazla bilgi edinebilirsiniz.
TIP
jsdom ortamı, mevcut JSDOM örneğine eşit olan jsdom genel değişkenini kullanıma sunar. TypeScript'in bunu tanımasını istiyorsanız, bu ortamı kullanırken vitest/jsdom'u tsconfig.json dosyanıza ekleyebilirsiniz:
{
"compilerOptions": {
"types": ["vitest/jsdom"]
}
}environmentOptions
- Tür:
Record<'jsdom' | string, unknown> - Varsayılan:
{}
Bu seçenekler, mevcut environment öğesinin setup metoduna aktarılır. Varsayılan olarak, test ortamınız olarak kullanıyorsanız yalnızca JSDOM seçeneklerini yapılandırabilirsiniz.
environmentMatchGlobs
- Tür:
[string, EnvironmentName][] - Varsayılan:
[]
Glob'lara göre ortamı otomatik olarak atayın. İ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ışacak
['tests/dom/**', 'jsdom'],
// tests/ içindeki .edge.test.ts ile biten tüm testler edge-runtime'da çalışacak
['**/*.edge.test.ts', 'edge-runtime'],
// ...
],
},
});poolMatchGlobs
- Tür:
[string, 'threads' | 'forks' | 'vmThreads' | 'vmForks' | 'typescript'][] - Varsayılan:
[]
Testlerin hangi havuzda çalışacağını glob'lara göre otomatik olarak atayın. İ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, onlar için `--pool=threads`'i etkinleştirmişsiniz gibi bir worker içinde çalışacak
['**/tests/worker-specific/**', 'threads'],
// "browser" dizinindeki tüm testleri gerçek bir tarayıcıda çalıştır
['**/tests/browser/**', 'browser'],
// diğer tüm testler, başka glob'lar belirtmediyseniz "browser.enabled" ve "threads" seçeneklerine göre çalışacak
// ...
],
},
});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 eskiyenleri silecektir.
watch*
- Tür:
boolean - Varsayılan:
!process.env.CI - CLI:
-w,--watch,--watch=false
İzleme modunu etkinleştirin.
root
- Tür:
string - CLI:
-r <path>,--root=<path>
Proje kökü.
dir
- Tür:
string - CLI:
--dir=<path> - Varsayılan:
rootile aynı
Test dosyalarını taramak için temel dizin. Kök dizininiz tüm projeyi kapsıyorsa, test bulma hızını artırmak için bu seçeneği belirleyebilirsiniz.
reporters*
- Tür:
Reporter | Reporter[] - Varsayılan:
'default' - CLI:
--reporter=<name>,--reporter=<name1> --reporter=<name2>
Çıktı için özel raporlayıcılar. Raporlayıcılar bir Reporter örneği, yerleşik raporlayıcıları seçmek için bir dize veya özel bir uygulamaya giden bir yol olabilir (örneğin, './path/to/reporter.ts', '@scope/reporter').
outputFile*
- Tür:
string | Record<string, string> - CLI:
--outputFile=<path>,--outputFile.json=./path
--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ı ayrı çıktıları tanımlayabilirsiniz.
pool*
- Tür:
'threads' | 'forks' | 'vmThreads' | 'vmForks' - Varsayılan:
'forks' - CLI:
--pool=threads
Testleri çalıştırmak için kullanılan havuz.
threads*
tinypool ( Piscina'nın hafif bir fork'u) kullanarak çoklu iş parçacığını etkinleştirin. İş parçacıkları kullanırken process.chdir() gibi işlemle ilgili API'leri kullanamazsınız. Prisma, bcrypt ve canvas gibi yerel dillerde yazılmış bazı kitaplıklar, birden çok iş parçacığında çalışırken sorun yaşar ve segfault'lara neden olur. Bu durumlarda, bunun yerine forks havuzunu kullanmanız önerilir.
forks*
threads havuzuna benzer, ancak tinypool aracılığıyla worker_threads yerine child_process kullanır. Testler ve ana işlem arasındaki iletişim, threads havuzu kadar hızlı değildir. process.chdir() gibi işlemle ilgili API'ler forks havuzunda kullanılabilir.
vmThreads*
Testleri bir threads havuzunda VM context (korumalı bir ortam içinde) kullanarak çalıştırın.
Bu, testlerin daha hızlı çalışmasını sağlar, ancak ESM kodu çalıştırılırken VM modülü kararsızdır. Testleriniz bellek sızıntısı yapacaktır - bunu önlemek için poolOptions.vmThreads.memoryLimit değerini manuel olarak düzenlemeyi düşünün.
WARNING
Korumalı alanda kod çalıştırmanın bazı avantajları (daha hızlı testler) vardır, ancak aynı zamanda bir dizi dezavantajı da vardır.
- (
fs,pathvb.) gibi yerel modüller içindeki global değişkenler, test ortamınızda bulunan global 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ınız) varsa bellek sızıntılarına neden olur. Node.js'de bu önbelleği temizleyen bir API yoktur.
- Korumalı bir ortamda global değişkenlere erişmek 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.
vmForks*
vmThreads havuzuna benzer, ancak tinypool aracılığıyla worker_threads yerine child_process kullanır. Testler ve ana işlem arasındaki iletişim, vmThreads havuzu kadar hızlı değildir. process.chdir() gibi işlemle ilgili API'ler vmForks havuzunda kullanılabilir. Lütfen bu havuzun vmThreads'de listelenen aynı tuzaklara sahip olduğunun farkında olun.
poolOptions*
- Tür:
Record<'threads' | 'forks' | 'vmThreads' | 'vmForks', {}> - Varsayılan:
{}
poolOptions.threads
threads havuzu için seçenekler.
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
poolOptions: {
threads: {
// İş parçacıklarıyla ilgili seçenekler burada
},
},
},
});poolOptions.threads.maxThreads*
- Tip:
number | string - Varsayılan: kullanılabilir CPU'lar
Maksimum iş parçacığı sayısı veya yüzdesi. Ayrıca VITEST_MAX_THREADS ortam değişkenini de kullanabilirsiniz.
poolOptions.threads.minThreads*
- Tip:
number | string - Varsayılan: kullanılabilir CPU'lar
Minimum iş parçacığı sayısı veya yüzdesi. Ayrıca VITEST_MIN_THREADS ortam değişkenini de kullanabilirsiniz.
poolOptions.threads.singleThread
- Tür:
boolean - Varsayılan:
false
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.
WARNING
Bu seçenek testlerin birbiri ardına çalışmasını zorlasa bile, bu seçenek 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ı global bağlamda çalışacaktır, bu nedenle yalıtımı kendiniz sağlamanız gerekir.
Global duruma (ön uç çerçeveleri genellikle yapar) güveniyorsanız veya kodunuzun her test için ayrı olarak tanımlanmış bir ortama güveniyorsa, bu her türlü soruna neden olabilir. Ancak global duruma mutlaka güvenmeyen veya bunu kolayca atlatabilen testleriniz için bir hız artışı olabilir (3 kata kadar daha hızlı).
poolOptions.threads.useAtomics*
- Tür:
boolean - Varsayılan:
false
İş parçacıklarını senkronize etmek için Atomics kullanın.
Bu, bazı durumlarda performansı artırabilir, ancak eski Node sürümlerinde segfault'a neden olabilir.
poolOptions.threads.isolate
- Tür:
boolean - Varsayılan:
true
Her test dosyası için ortamı yalıtın.
poolOptions.threads.execArgv*
- Tür:
string[] - Varsayılan:
[]
İş parçacıklarındaki node'a ek argümanlar geçirin. Daha fazla bilgi için Command-line API | Node.js adresine bakın.
WARNING
Kullanırken dikkatli olun, çünkü bazı seçenekler worker'ın çökmesine neden olabilir, örneğin --prof, --title. Bkz. https://github.com/nodejs/node/issues/41103.
poolOptions.forks
forks havuzu için seçenekler.
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
poolOptions: {
forks: {
// Forks ile ilgili seçenekler burada
},
},
},
});poolOptions.forks.maxForks*
- Tip:
number | string - Varsayılan: kullanılabilir CPU'lar
Maksimum fork sayısı veya yüzdesi.
poolOptions.forks.minForks*
- Tip:
number | string - Varsayılan: kullanılabilir CPU'lar
Minimum fork sayısı veya yüzdesi.
poolOptions.forks.isolate
- Tür:
boolean - Varsayılan:
true
Her test dosyası için ortamı yalıtın.
poolOptions.forks.singleFork
- Tür:
boolean - Varsayılan:
false
Aynı ortama sahip tüm testleri tek bir alt işlem 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.
WARNING
Bu seçenek testlerin birbiri ardına çalışmasını zorlasa bile, bu seçenek 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ı global bağlamda çalışacaktır, bu nedenle yalıtımı kendiniz sağlamanız gerekir.
Global duruma (ön uç çerçeveleri genellikle yapar) güveniyorsanız veya kodunuzun her test için ayrı olarak tanımlanmış bir ortama güveniyorsanız, bu her türlü soruna neden olabilir. Ancak global duruma mutlaka güvenmeyen veya bunu kolayca atlatabilen testleriniz için bir hız artışı olabilir (3 kata kadar daha hızlı).
poolOptions.forks.execArgv*
- Tür:
string[] - Varsayılan:
[]
Alt işlemlerdeki node işlemine ek argümanlar geçirin. Daha fazla bilgi için Command-line API | Node.js adresine bakın.
WARNING
Kullanırken dikkatli olun, çünkü bazı seçenekler worker'ın çökmesine neden olabilir, örneğin --prof, --title. Bkz. https://github.com/nodejs/node/issues/41103.
poolOptions.vmThreads
vmThreads havuzu için seçenekler.
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
poolOptions: {
vmThreads: {
// VM iş parçacıklarıyla ilgili seçenekler burada
},
},
},
});poolOptions.vmThreads.maxThreads*
- Tür:
number | string - Varsayılan: mevcut CPU'lar
Maksimum thread sayısı veya yüzdesi. Ayrıca VITEST_MAX_THREADS ortam değişkenini de kullanabilirsiniz.
poolOptions.vmThreads.minThreads*
- Tür:
number | string - Varsayılan: mevcut CPU'lar
Minimum thread sayısı veya yüzdesi. Ayrıca VITEST_MIN_THREADS ortam değişkenini de kullanabilirsiniz.
poolOptions.vmThreads.memoryLimit*
- Tür:
string | number - Varsayılan:
1 / CPU Çekirdekleri
Worker'lar geri dönüştürülmeden önce bellek sınırını belirtir. Bu değer büyük ölçüde ortamınıza bağlıdır, bu nedenle varsayılana güvenmek yerine manuel olarak belirtmek daha iyidir.
TIP
Uygulama, Jest'in workerIdleMemoryLimit öğesine 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üzdesi100KB,65MBvb. - 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.
poolOptions.vmThreads.useAtomics*
- Tür:
boolean - Varsayılan:
false
İş parçacıklarını senkronize etmek için Atomics kullanın.
Bu, bazı durumlarda performansı artırabilir, ancak eski Node sürümlerinde segfault'a neden olabilir.
poolOptions.vmThreads.execArgv*
- Tür:
string[] - Varsayılan:
[]
VM bağlamındaki node işlemine ek argümanlar geçirin. Daha fazla bilgi için Command-line API | Node.js adresine bakın.
WARNING
Kullanırken dikkatli olun, çünkü bazı seçenekler worker'ın çökmesine neden olabilir, örneğin --prof, --title. Bkz. https://github.com/nodejs/node/issues/41103.
poolOptions.vmForks
vmForks havuzu için seçenekler.
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
poolOptions: {
vmForks: {
// VM forks ile ilgili seçenekler burada
},
},
},
});poolOptions.vmForks.maxForks*
- Tip:
number | string - Varsayılan: mevcut CPU'lar
Maksimum iş parçacığı sayısı veya yüzdesi. Ayrıca VITEST_MAX_FORKS ortam değişkenini kullanabilirsiniz.
poolOptions.vmForks.minForks*
- Tip:
number | string - Varsayılan: mevcut CPU'lar
Minimum iş parçacığı sayısı veya yüzdesi. Ayrıca VITEST_MIN_FORKS ortam değişkenini kullanabilirsiniz.
poolOptions.vmForks.memoryLimit*
- Tür:
string | number - Varsayılan:
1 / CPU Çekirdekleri
Worker'lar geri dönüştürülmeden önce bellek sınırını belirtir. Bu değer büyük ölçüde ortamınıza bağlıdır, bu nedenle varsayılana güvenmek yerine manuel olarak belirtmek daha iyidir. Değerin nasıl hesaplandığı poolOptions.vmThreads.memoryLimit içinde açıklanmıştır.
poolOptions.vmForks.execArgv*
- Tür:
string[] - Varsayılan:
[]
VM bağlamındaki node işlemine ek argümanlar geçirin. Daha fazla bilgi için Command-line API | Node.js adresine bakın.
WARNING
Kullanırken dikkatli olun, çünkü bazı seçenekler worker'ın çökmesine neden olabilir, örneğin --prof, --title. Bkz. https://github.com/nodejs/node/issues/41103.
fileParallelism*
- Tür:
boolean - Varsayılan:
true - CLI:
--no-file-parallelism,--fileParallelism=false
Tüm test dosyaları paralel olarak mı çalıştırılmalı? Bu değeri false olarak ayarlamak, maxWorkers ve minWorkers seçeneklerini 1 olarak ayarlar.
TIP
Bu seçenek, aynı dosya içindeki testlerin paralel çalışmasını etkilemez. Bunları paralel çalıştırmak için describe üzerinde concurrent seçeneğini kullanın veya bir yapılandırma aracılığıyla ayarlayın.
maxWorkers*
- Type:
number | string
الاختبارات التي ستُجرى Worker sayısını belirler. poolOptions.{threads,vmThreads}.maxThreads/poolOptions.forks.maxForks daha yüksek önceliğe sahiptir.
minWorkers*
- Type:
number | string
Testleri çalıştırmak için minimum Worker sayısını veya yüzdesini belirler. poolOptions.{threads,vmThreads}.minThreads/poolOptions.forks.minForks daha yüksek önceliğe sahiptir.
testTimeout
- Type:
number - Varsayılan: Node.js'de
5_000,browser.enabledtrueise15_000 - CLI:
--test-timeout=5000,--testTimeout=5000
Bir testin milisaniye cinsinden varsayılan zaman aşımı.
hookTimeout
- Type:
number - Varsayılan: Node.js'de
10_000,browser.enabledtrueise30_000 - CLI:
--hook-timeout=10000,--hookTimeout=10000
Bir hook'un milisaniye cinsinden varsayılan zaman aşımı.
teardownTimeout*
- Tür:
number - Varsayılan:
10000 - CLI:
--teardown-timeout=5000,--teardownTimeout=5000
Vitest kapanırken tamamlanması için beklenecek varsayılan zaman aşımı süresi (milisaniye).
silent*
- Tür:
boolean - Varsayılan:
false - CLI:
--silent,--silent=false
Testlerin konsol çıktılarını sessiz modda çalıştırma.
setupFiles
- Tür:
string | string[]
Kurulum dosyalarının yolları. Her test dosyasından önce çalıştırılır.
INFO
Bir kurulum dosyasını düzenlemek, tüm testlerin otomatik olarak yeniden çalıştırılmasını tetikler.
İş parçacıkları arasında ayrım yapmak için process.env.VITEST_POOL_ID (sayısal dize) kullanabilirsiniz.
TIP
--isolate=false kullanıyorsanız, bu kurulum dosyasının aynı global kapsamda birden çok kez çalıştırılacağını unutmayın. Bu, her testten önce aynı global nesneye eriştiğiniz anlamına gelir, bu nedenle gereksiz yere aynı işlemi tekrar yapmadığınızdan emin olun.
Örneğin, global bir değişken kullanabilirsiniz:
import { config } from '@some-testing-lib';
if (!globalThis.defined) {
config.plugins = [myCoolPlugin];
computeHeavyThing();
globalThis.defined = true;
}
// hooks are reset before each suite
afterEach(() => {
cleanup();
});
globalThis.resetBeforeEachTest = true;provide 2.1.0+
- Tür:
Partial<ProvidedContext>
inject metodunu kullanarak testlerinizde erişilebilecek değerleri tanımlayın.
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
provide: {
API_KEY: '123',
},
},
});import { expect, inject, test } from 'vitest';
test('api key is defined', () => {
expect(inject('API_KEY')).toBe('123');
});WARNING
Özellikler dize olmalı ve değerler serileştirilebilir olmalıdır, çünkü bu nesne farklı prosesler arasında aktarılacaktır.
TIP
TypeScript kullanıyorsanız, tür açısından güvenli erişim için ProvidedContext türünü genişletmeniz gerekecektir:
// vitest.shims.d.ts
declare module 'vitest' {
export interface ProvidedContext {
API_KEY: string;
}
}
// mark this file as a module so augmentation works correctly
export {};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 (teardown) fonksiyonu döndüren bir default fonksiyonu dışa aktarabilir (örnek).
INFO
Birden çok globalSetup dosyası kullanılabilir. Setup ve teardown fonksiyonları, teardown fonksiyonları ters sırada olacak şekilde sıralı olarak çalıştırılır.
WARNING
Genel kurulum, yalnızca en az bir çalışan test olduğunda çalışır. Bu, test dosyası değiştirildikten sonra watch modunda genel kurulumun çalışmaya başlayabileceği anlamına gelir (test dosyası, çalışmadan önce genel kurulumun bitmesini bekleyecektir).
Genel kurulumun farklı bir genel kapsamda çalıştığını unutmayın, bu nedenle testleriniz burada tanımlanan değişkenlere erişemez. Ancak, provide yöntemi aracılığıyla seri hale getirilebilir verileri testlere iletebilirsiniz:
export default function setup({ provide }) {
provide('wsPort', 3000);
}import type { GlobalSetupContext } from 'vitest/node';
export default function setup({ provide }: GlobalSetupContext) {
provide('wsPort', 3000);
}
declare module 'vitest' {
export interface ProvidedContext {
wsPort: number;
}
}import { inject } from 'vitest';
inject('wsPort') === 3000;forceRerunTriggers*
- Tür:
string[] - Varsayılan:
['**/package.json/**', '**/vitest.config.*/**', '**/vite.config.*/**']
Tüm test grubunun (suite) yeniden çalıştırılmasını tetikleyecek dosya yollarının glob deseni. --changed argümanıyla eşleştirildiğinde, tetikleyici git diff'inde bulunursa tüm test suite'ini çalıştırır.
Vite bir modül grafiği oluşturamadığı için CLI komutlarını çağırmayı test ediyorsanız kullanışlıdır:
test('execute a script', async () => {
// Vitest cannot rerun this test, if content of `dist/index.js` changes
await execa('node', ['dist/index.js']);
});TIP
Dosyalarınızın server.watch.ignored tarafından hariç tutulmadığından emin olun.
coverage*
Kod kapsamı analizi için v8, istanbul veya özel bir kapsam sağlayıcısı kullanabilirsiniz.
Nokta gösterimi ile CLI'ya kapsam seçenekleri sağlayabilirsiniz:
npx vitest --coverage.enabled --coverage.provider=istanbul --coverage.allWARNING
Nokta gösterimiyle kapsam seçenekleri kullanıyorsanız, --coverage.enabled belirtmeyi unutmayın. Bu durumda tek bir --coverage seçeneği sağlamayın.
coverage.provider
- Tür:
'v8' | 'istanbul' | 'custom' - Varsayılan:
'v8' - CLI:
--coverage.provider=<provider>
Kapsam toplama için kullanılacak aracı seçmek için provider kullanın.
coverage.enabled
- Tür:
boolean - Varsayılan:
false - Sağlayıcılar için kullanılabilir:
'v8' | 'istanbul' - CLI:
--coverage.enabled,--coverage.enabled=false
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>
Kapsam analizine dahil edilecek dosyaların glob desenleri listesi.
coverage.extension
- Tür:
string | string[] - Varsayılan:
['.js', '.cjs', '.mjs', '.ts', '.mts', '.tsx', '.jsx', '.vue', '.svelte', '.marko', '.astro'] - 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/**',
'**/node_modules/**',
'**/[.]**',
'packages/*/test?(s)/**',
'**/*.d.ts',
'**/virtual:*',
'**/__x00__*',
'**/\x00*',
'cypress/**',
'test?(s)/**',
'test?(-*).?(c|m)[jt]s?(x)',
'**/*{.,-}{test,spec,bench,benchmark}?(-d).?(c|m)[jt]s?(x)',
'**/__tests__/**',
'**/{karma,rollup,webpack,vite,vitest,jest,ava,babel,nyc,cypress,tsup,build,eslint,prettier}.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 analizinden hariç tutulacak dosyaların glob desenleri listesi.
Bu seçenek tüm varsayılan seçenekleri geçersiz kılar. Yoksayılacak yeni desenler eklerken varsayılan seçenekleri genişletin:
import { coverageConfigDefaults, defineConfig } from 'vitest/config';
export default defineConfig({
test: {
coverage: {
exclude: ['**/custom-pattern/**', ...coverageConfigDefaults.exclude],
},
},
});NOT
Vitest otomatik olarak test dosyası include desenlerini coverage.exclude'in varsayılan değerine ekler.
coverage.all
- Tür:
boolean - Varsayılan:
true - 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ği.
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ı temizle.
coverage.cleanOnRerun
- Tür:
boolean - Varsayılan:
true - Sağlayıcılar için kullanılabilir:
'v8' | 'istanbul' - CLI:
--coverage.cleanOnRerun,--coverage.cleanOnRerun=false
İzleme yeniden çalıştırmada kapsam raporunu temizleyin. İzleme modundaki önceki çalıştırmalardan elde edilen kapsam sonuçlarını korumak için false olarak ayarlayın.
coverage.reportsDirectory
- Tür:
string - Varsayılan:
'./coverage' - Sağlayıcılar için kullanılabilir:
'v8' | 'istanbul' - CLI:
--coverage.reportsDirectory=<path>
WARNING
coverage.clean etkinse (varsayılan değer), Vitest testleri çalıştırmadan önce bu dizini silecektir.
Kapsam raporunun yazılacağı dizin.
HTML reporter çıktısında kapsam raporunu önizlemek için, bu seçeneğin html rapor dizininin bir alt dizini olarak ayarlanması gerekir (örneğin ./html/coverage).
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. Muhabire özgü seçenekler hakkında ayrıntılar için @types/istanbul-reporter adresine bakın.
Muhabirin üç farklı türü vardır:
- Tek bir muhabir:
{ reporter: 'html' } - Seçeneksiz birden çok muhabir:
{ reporter: ['html', 'json'] } - Muhabir seçenekleriyle tek veya birden çok muhabir: ts
{ reporter: [ ['lcov', { projectRoot: './src' }], ['json', { file: 'coverage.json' }], ['text'], ]; }
Özel kapsama raporlayıcıları da geçirebilirsiniz. Daha fazla bilgi için Kılavuz - Özel Kapsama Raporlayıcısı bölümüne bakın.
{
reporter: [
// Specify reporter using name of the NPM package
'@vitest/custom-coverage-reporter',
['@vitest/custom-coverage-reporter', { someOption: true }],
// Specify reporter using local path
'/absolute/path/to/custom-reporter.cjs',
['/absolute/path/to/custom-reporter.cjs', { someOption: true }],
];
}Kapsam raporunuzu Vitest UI'da kontrol edebilirsiniz: Daha fazla ayrıntı için Vitest UI Coverage sayfasına bakınız.
coverage.reportOnFailure
- Tür:
boolean - Varsayılan:
false - Sağlayıcılar için kullanılabilir:
'v8' | 'istanbul' - CLI:
--coverage.reportOnFailure,--coverage.reportOnFailure=false
Testler başarısız olsa bile kapsam raporu oluştur.
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 kapsamını dahil et.
coverage.excludeAfterRemap 2.1.0+
- Tip:
boolean - Varsayılan:
false - Kullanılabilir sağlayıcılar:
'v8' | 'istanbul' - CLI:
--coverage.excludeAfterRemap,--coverage.excludeAfterRemap=false
Kapsam orijinal kaynaklara yeniden eşlendikten sonra dışlamaları tekrar uygulayın. Bu, kaynak dosyalarınızın dönüştürüldüğü ve kaynak olmayan dosyaların kaynak eşlemelerini içerebileceği durumlarda kullanışlıdır.
coverage.exclude kalıplarınızla eşleşse bile raporda görünen dosyalar gördüğünüzde bu seçeneği kullanın.
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ı gösterme.
coverage.thresholds
Kapsam eşikleri için seçenekler.
coverage.thresholds.lines
- Tür:
number - Sağlayıcılar için kullanılabilir:
'v8' | 'istanbul' - CLI:
--coverage.thresholds.lines=<number>
Satırlar için genel eşik. Daha fazla bilgi için istanbul belgelerine bakın.
coverage.thresholds.functions
- Tür:
number - Sağlayıcılar için kullanılabilir:
'v8' | 'istanbul' - CLI:
--coverage.thresholds.functions=<number>
Fonksiyonlar için genel eşik. Daha fazla bilgi için istanbul belgelerine bakın.
coverage.thresholds.branches
- Tür:
number - Sağlayıcılar için kullanılabilir:
'v8' | 'istanbul' - CLI:
--coverage.thresholds.branches=<number>
Dallar için genel eşik. Daha fazla bilgi için istanbul belgelerine bakın.
coverage.thresholds.statements
- Tür:
number - Sağlayıcılar için kullanılabilir:
'v8' | 'istanbul' - CLI:
--coverage.thresholds.statements=<number>
İfadeler için genel eşik. Daha fazla bilgi için istanbul belgelerine bakın.
coverage.thresholds.perFile
- Tür:
boolean - Varsayılan:
false - Sağlayıcılar için kullanılabilir:
'v8' | 'istanbul' - CLI:
--coverage.thresholds.perFile,--coverage.thresholds.perFile=false
Dosya başına eşik kontrolü yap.
coverage.thresholds.autoUpdate
- Tür:
boolean - Varsayılan:
false - Sağlayıcılar için kullanılabilir:
'v8' | 'istanbul' - CLI:
--coverage.thresholds.autoUpdate=<boolean>
Mevcut kapsam, yapılandırılmış eşiklerin üzerindeyse, lines, functions, branches ve statements değerlerini yapılandırma dosyasında otomatik olarak güncelle. Bu seçenek, kapsam iyileştirildiğinde eşikleri korumaya yardımcı olur.
coverage.thresholds.100
- Tür:
boolean - Varsayılan:
false - Sağlayıcılar için kullanılabilir:
'v8' | 'istanbul' - CLI:
--coverage.thresholds.100,--coverage.thresholds.100=false
Genel eşikleri 100'e ayarla. --coverage.thresholds.lines 100 --coverage.thresholds.functions 100 --coverage.thresholds.branches 100 --coverage.thresholds.statements 100 için kısayol.
coverage.thresholds[glob-pattern]
- Tür:
{ statements?: number functions?: number branches?: number lines?: number } - Varsayılan:
undefined - Sağlayıcılar için kullanılabilir:
'v8' | 'istanbul'
Glob deseniyle eşleşen dosyalar için eşikler ayarlar.
NOT
Vitest, glob desenleriyle kapsananlar dahil olmak üzere tüm dosyaları genel kapsam eşiklerine dahil eder. Bu, Jest davranışından farklıdır.
{
coverage: {
thresholds: {
// Thresholds for all files
functions: 95,
branches: 70,
// Thresholds for matching glob pattern
'src/utils/**.ts': {
statements: 95,
functions: 90,
branches: 85,
lines: 80,
},
// Files matching this pattern will only have lines thresholds set.
// Global thresholds are not inherited.
'**/math.ts': {
lines: 100,
}
}
}
}coverage.thresholds[glob-pattern].100 2.1.0+
- Tip:
boolean - Varsayılan:
false - Sağlayıcılar için kullanılabilir:
'v8' | 'istanbul'
Glob desenine uyan dosyalar için eşikleri 100 olarak ayarlar.
{
coverage: {
thresholds: {
// Tüm dosyalar için eşikler
functions: 95,
branches: 70,
// Glob desenine uyan dosyalar için eşikler
'src/utils/**.ts': { 100: true },
'**/math.ts': { 100: true }
}
}
}coverage.ignoreEmptyLines
- Tür:
boolean - Varsayılan:
true(v1 sürümündefalse) - Sağlayıcılar için kullanılabilir:
'v8' - CLI:
--coverage.ignoreEmptyLines=<boolean>
Boş satırları, yorumları ve Typescript tipleri gibi çalışma zamanında kullanılmayan kodları yoksay.
Bu seçenek yalnızca kullanılan derleyici yorumları ve diğer çalışma zamanı olmayan kodları dönüştürülmüş koddan kaldırırsa çalışır. Varsayılan olarak Vite, .ts, .tsx ve .jsx dosyalarından yorumları ve Typescript türlerini kaldıran ESBuild'i kullanır.
ESBuild'i diğer dosyalara da uygulamak istiyorsanız, bunları esbuild seçeneklerinde tanımlayın:
import { defineConfig } from 'vitest/config';
export default defineConfig({
esbuild: {
// Transpile all files with ESBuild to remove comments from code coverage.
// Required for `test.coverage.ignoreEmptyLines` to work:
include: ['**/*.js', '**/*.jsx', '**/*.mjs', '**/*.ts', '**/*.tsx'],
},
test: {
coverage: {
provider: 'v8',
ignoreEmptyLines: true,
},
},
});coverage.ignoreClassMethods
- Tür:
string[] - Varsayılan:
[] - Sağlayıcılar için kullanılabilir:
'istanbul' - CLI:
--coverage.ignoreClassMethods=<method>
Kapsam analizinde yoksayılacak sınıf metotlarının adlarını bir dizi olarak 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' - CLI:
--coverage.watermarks.statements=50,80,--coverage.watermarks.branches=50,80
İfadeler, satırlar, dallar ve fonksiyonlar için eşik değerleri. Daha fazla bilgi için istanbul belgelerine bakın.
coverage.processingConcurrency
- Tür:
boolean - Varsayılan:
Math.min(20, os.availableParallelism?.() ?? os.cpus().length) - Sağlayıcılar için kullanılabilir:
'v8' | 'istanbul' - CLI:
--coverage.processingConcurrency=<number>
Kapsam sonuçları işlenirken kullanılan eş zamanlılık limiti.
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ünün 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>
Bu özellik, belirtilen kalıpla eşleşen tam adlara sahip testleri çalıştırır. Eğer bu özelliğe OnlyRunThis değeri atanırsa, test adında OnlyRunThis kelimesini içermeyen testler atlanır.
import { expect, test } from 'vitest';
// Çalıştırılır
test('OnlyRunThis', () => {
expect(true).toBe(true);
});
// Atlanır
test('doNotRun', () => {
expect(true).toBe(true);
});open*
- Tür:
boolean - Varsayılan:
!process.env.CI - CLI:
--open,--open=false
Vitest Arayüzünü açar (Geliştirme Aşamasında).
api
- Tür:
boolean | number - Varsayılan:
false - CLI:
--api,--api.port,--api.host,--api.strictPort
Belirli bir portu dinler ve bir API sunar. true olarak ayarlandığında, varsayılan port 51204 olur.
browser
- Tür:
{ enabled?, name?, provider?, headless?, api? } - Varsayılan:
{ enabled: false, headless: process.env.CI, api: 63315 } - CLI:
--browser,--browser=<name>,--browser.name=chrome --browser.headless
Vitest testlerini bir tarayıcıda çalıştırır. 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 daha fazla bilgiyi rehber sayfasında bulabilirsiniz.
WARNING
Bu deneysel bir özelliktir. Kırıcı değişiklikler SemVer'i takip etmeyebilir, bu nedenle kullanırken lütfen Vitest sürümünüzü sabitleyin.
browser.enabled
- Tür:
boolean - Varsayılan:
false - CLI:
--browser,--browser.enabled=false
Varsayılan olarak tüm testleri tarayıcıda çalıştırır. poolMatchGlobs seçeneği ile bu davranışı geçersiz kılabilirsiniz.
browser.name
- Tür:
string - CLI:
--browser=safari
Tüm testleri belirtilen tarayıcıda çalıştırır. Farklı sağlayıcılarda olası seçenekler:
webdriverio:firefox,chrome,edge,safariplaywright:firefox,webkit,chromium- özel: sağlayıcıya iletilecek herhangi bir dize
browser.headless
- Tür:
boolean - Varsayılan:
process.env.CI - CLI:
--browser.headless,--browser.headless=false
Tarayıcıyı headless modda çalıştırır. Vitest'i CI ortamında çalıştırıyorsanız, bu özellik varsayılan olarak etkindir.
browser.isolate
- Tür:
boolean - Varsayılan:
true - CLI:
--browser.isolate,--browser.isolate=false
Her testi ayrı bir iframe içinde çalıştırır.
browser.testerHtmlPath
- Tür:
string - Varsayılan:
@vitest/browser/tester.html - Sürüm: Vitest 2.1.4'ten itibaren
HTML giriş noktasına giden bir yol. Projenin kök dizinine göre bağıl olabilir. Bu dosya transformIndexHtml kancasıyla işlenecektir.
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 kod sunan Vite sunucusu için seçenekleri yapılandırın. test.api seçeneğini etkilemez. Varsayılan olarak, Vitest geliştirme sunucusuyla çakışmaları önlemek için 63315 portunu atar, böylece her ikisini de paralel çalıştırabilirsiniz.
browser.provider
- Tür:
'webdriverio' | 'playwright' | 'preview' | string - Varsayılan:
'preview' - CLI:
--browser.provider=playwright
Tarayıcı testlerini çalıştırırken kullanılacak sağlayıcıya giden yol. Vitest preview (varsayılan), webdriverio, playwright olmak üzere üç sağlayıcı sağlar. Özel sağlayıcılar default dışa aktarma kullanılarak dışa aktarılmalı ve şu şekilde olmalıdır:
export interface BrowserProvider {
name: string;
getSupportedBrowsers: () => readonly string[];
initialize: (
ctx: Vitest,
options: { browser: string; options?: BrowserProviderOptions }
) => Awaitable<void>;
openPage: (url: string) => Awaitable<void>;
close: () => Awaitable<void>;
}WARNING
Bu, kütüphane yazarları için gelişmiş bir API'dir. Sadece bir tarayıcıda test çalıştırmanız gerekiyorsa, browser seçeneğini kullanın.
browser.providerOptions
- Tür:
BrowserProviderOptions
provider.initialize fonksiyonu çağrıldığında sağlayıcıya iletilecek seçeneklerdir.
export default defineConfig({
test: {
browser: {
providerOptions: {
launch: {
devtools: true,
},
},
},
},
});TIP
Yerleşik sağlayıcıları kullanırken daha iyi bir tür güvenliğine sahip olmak için, tsconfig dosyanızın compilerOptions.types alanına kullandığınız sağlayıcı için bu türlerden birini ekleyebilirsiniz:
{
"compilerOptions": {
"types": [
"@vitest/browser/providers/webdriverio",
"@vitest/browser/providers/playwright"
]
}
}browser.ui
- Tip:
boolean - Varsayılan:
!isCI - CLI:
--browser.ui=false
Vitest UI'nin sayfaya enjekte edilip edilmeyeceği. Varsayılan olarak, geliştirme sırasında UI iframe'i enjekte eder.
browser.viewport
- Tip:
{ width, height } - Varsayılan:
414x896
Varsayılan iframe görüntü alanı.
browser.locators
Dahili tarayıcı lokatörleri için seçenekler.
browser.locators.testIdAttribute
- Tip:
string - Varsayılan:
data-testid
getByTestId lokatörünü kullanarak öğeleri bulmak için kullanılan özellik.
browser.screenshotDirectory
- Tip:
string - Varsayılan: Test dosyası dizinindeki
__snapshots__
root'a göre snapshot dizininin yolu.
browser.screenshotFailures
- Tip:
boolean - Varsayılan:
!browser.ui
Test başarısız olursa Vitest ekran görüntüsü almalı mı?
browser.orchestratorScripts
- Tip:
BrowserScript[] - Varsayılan:
[]
Test iframeleri başlatılmadan önce orchestrator HTML'ye enjekte edilmesi gereken özel scriptler. Bu HTML belgesi yalnızca iframeleri ayarlar ve kodunuzu gerçekten içe aktarmaz.
src ve content komut dosyası Vite eklentileri tarafından işlenecektir. Komut dosyası aşağıdaki şekilde sağlanmalıdır:
export interface BrowserScript {
/**
* "content" sağlanmışsa ve tür "module" ise, bu onun tanımlayıcısı olacaktır.
*
* TypeScript kullanıyorsanız, örneğin buraya `.ts` uzantısı ekleyebilirsiniz.
* @default `injected-${index}.js`
*/
id?: string;
/**
* Enjekte edilecek JavaScript içeriği. Bu dize, tür "module" ise Vite eklentileri tarafından işlenir.
*
* Vite'ye dosya uzantısı hakkında bir ipucu vermek için `id` kullanabilirsiniz.
*/
content?: string;
/**
* Komut dosyasının yolu. Bu değer Vite tarafından çözülür, böylece bir node modülü veya bir dosya yolu olabilir.
*/
src?: string;
/**
* Komut dosyası eşzamansız olarak yüklenmeli mi?
*/
async?: boolean;
/**
* Komut dosyası türü.
* @default 'module'
*/
type?: string;
}browser.testerScripts
- Tür:
BrowserScript[] - Varsayılan:
[]
Test ortamı başlatılmadan önce test HTML'sine enjekte edilecek özel betiklerdir. Bu, Vitest tarayıcı uygulaması için gereken polyfill'leri enjekte etmek için kullanışlıdır. Neredeyse tüm durumlarda bunun yerine setupFiles kullanılması önerilir.
src ve content komut dosyası Vite eklentileri tarafından işlenecektir.
browser.commands
- Tip:
Record<string, BrowserCommand> - Varsayılan:
{ readFile, writeFile, ... }
Tarayıcı testleri sırasında @vitest/browser/commands adresinden içe aktarılabilecek özel komutlar.
clearMocks
- Tür:
boolean - Varsayılan:
false
Her testten önce tüm mock'larda .mockClear() fonksiyonunu çağırır. Bu, mock geçmişini temizler, ancak uygulamasını varsayılan değerine sıfırlamaz.
mockReset
- Tür:
boolean - Varsayılan:
false
Her testten önce tüm mock'larda .mockReset() fonksiyonunu çağırır. Bu, mock geçmişini temizler ve uygulamasını boş bir fonksiyona sıfırlar ( undefined döndürür).
restoreMocks
- Tür:
boolean - Varsayılan:
false
Her testten önce tüm mock'larda .mockRestore() fonksiyonunu çağırır. Bu, mock geçmişini temizler ve uygulamasını orijinal haline sıfırlar.
unstubEnvs
- Tür:
boolean - Varsayılan:
false
Her testten önce vi.unstubAllEnvs fonksiyonunu çağırır.
unstubGlobals
- Tür:
boolean - Varsayılan:
false
Her testten önce vi.unstubAllGlobals fonksiyonunu çağırır.
testTransformMode
- Tür:
{ web?, ssr? }
Glob deseniyle eşleşen bir testin içine aktarılan tüm modüllerin dönüştürme yöntemini 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 SSR dönüştürme hattını kullanır. Vite eklentileri, bu dosyaları işlerken ssr: true bayrağını alacaktır.
testTransformMode.web
- Tür:
string[] - Varsayılan:
[]
Önce normal bir dönüştürme hattı (tarayıcıyı hedefleyen) uygular, ardından kodu Node'da çalıştırmak için bir SSR yeniden yazma işlemi yapar. Vite eklentileri, bu dosyaları işlerken ssr: false bayrağını alacaktır.
snapshotFormat*
- Tür:
PrettyFormatOptions
Snapshot testleri için biçimlendirme seçenekleridir. Bu seçenekler pretty-format kütüphanesine aktarılır.
TIP
Bu nesnedeki plugins alanının yoksayılacağını unutmayın.
Anlık görüntü serileştiricisini pretty-format eklentileri aracılığıyla genişletmeniz gerekiyorsa, lütfen expect.addSnapshotSerializer API'sini veya snapshotSerializers seçeneğini kullanın.
snapshotSerializers*
- Tür:
string[] - Varsayılan:
[]
Özel anlık görüntü serileştiricileri eklemek istiyorsanız, anlık görüntü testi için anlık görüntü serileştirici modüllerine giden bir yol listesidir. Daha fazla bilgi için Özel Serileştirici bölümüne bakın.
resolveSnapshotPath*
- Tür:
(testPath: string, snapExtension: string) => string - Varsayılan: anlık görüntü dosyalarını
__snapshots__dizininde saklar
Varsayılan anlık görüntü yolunu geçersiz kılar. Örneğin, anlık görüntüleri 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:
!process.env.CI - CLI:
--allowOnly,--allowOnly=false
Sadece (.only) olarak işaretlenmiş testlere ve test gruplarına izin verir.
dangerouslyIgnoreUnhandledErrors*
- Tür:
boolean - Varsayılan:
false - CLI:
--dangerouslyIgnoreUnhandledErrors--dangerouslyIgnoreUnhandledErrors=false
Oluşan işlenmemiş hataları görmezden gelir.
passWithNoTests*
- Tür:
boolean - Varsayılan:
false - CLI:
--passWithNoTests,--passWithNoTests=false
Test bulunamazsa Vitest hata vermez.
logHeapUsage
- Tür:
boolean - Varsayılan:
false - CLI:
--logHeapUsage,--logHeapUsage=false
Her testten sonra heap kullanımını gösterir. Bellek sızıntılarını ayıklamak için kullanışlıdır.
css
- Tür:
boolean | { include?, exclude?, modules? }
CSS işlemenin yapılıp yapılmayacağını ayarlar. Dışarıda bırakıldığında, sonraki işlemleri engellemek için CSS dosyaları boş dizelerle değiştirilir. CSS Modülleri, çalışma zamanını etkilememek için bir proxy döndürecektir.
css.include
- Tür:
RegExp | RegExp[] - Varsayılan:
[]
Gerçek CSS içeriği döndürmesi gereken ve Vite işlem 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ı olup olmayacağını yapılandırabilirsiniz. Aşağıdaki seçeneklerden birini seçebilirsiniz:
stable: sınıf adları_${name}_${hashedFilename}olarak oluşturulacaktır. Bu, CSS içeriği değiştirilirse 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ü özelliğini kullanıyorsanız kullanışlıdır.scoped: Sınıf adları normal şekilde oluşturulur, eğer tanımlanmışsacss.modules.generateScopedNameyöntemi kullanılır ve CSS işleme etkinleştirilir. Varsayılan olarak, dosya adı_${name}_${hash}olarak oluşturulacaktır; burada hash, dosya adını ve dosyanın içeriğini içerir.non-scoped: sınıf adları karma hale getirilmeyecektir.
WARNING
Varsayılan olarak, Vitest bir proxy olarak dışa aktarılır ve CSS Modülleri işlenmez. 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(sayı) - Varsayılan:
5 - CLI:
--max-concurrency=10,--maxConcurrency=10
test.concurrent ile işaretlenmiş testlerden, aynı anda çalışmasına izin verilen maksimum test sayısı.
Bu limiti aşan testler, uygun bir yuva açıldığında çalıştırılmak üzere sıraya alınır.
cache*
- Tür:
false - CLI:
--no-cache,--cache=false
Önbellekleme özelliğini devre dışı bırakmak için bu seçeneği kullanın. Vitest, daha uzun süren ve başarısız olan testleri önceliklendirmek için test sonuçlarını önbelleğe alır.
Önbellek dizini, Vite'nin cacheDir seçeneği tarafından kontrol edilir:
import { defineConfig } from 'vitest/config';
export default defineConfig({
cacheDir: 'custom-folder/.vitest',
});process.env.VITEST kullanarak dizini yalnızca Vitest ile sınırlayabilirsiniz:
import { defineConfig } from 'vitest/config';
export default defineConfig({
cacheDir: process.env.VITEST ? 'custom-folder/.vitest' : undefined,
});sequence
- Tür:
{ sequencer?, shuffle?, seed?, hooks?, setupFiles? }
Testlerin nasıl sıralanacağına ilişkin seçenekler.
Nokta notasyonu ile CLI'ya sıralama seçenekleri sağlayabilirsiniz:
npx vitest --sequence.shuffle --sequence.seed=1000sequence.sequencer*
- Tür:
TestSequencerConstructor - Varsayılan:
BaseSequencer
Parçalama (sharding) ve sıralama yöntemlerini tanımlayan özel bir sınıf. Yalnızca sort veya shard yöntemlerinden birini yeniden tanımlamanız gerekiyorsa vitest/node'dan BaseSequencer'ı genişletebilirsiniz, ancak her iki yöntem de mevcut olmalıdır.
Parçalama, sıralamadan önce gerçekleşir ve yalnızca --shard seçeneği sağlandığında uygulanır.
sequence.shuffle
- Tür:
boolean | { files?, tests? } - Varsayılan:
false - CLI:
--sequence.shuffle,--sequence.shuffle=false
Dosyaların ve testlerin rastgele sırada çalışmasını sağlamak için bu seçeneği veya CLI argümanı --sequence.shuffle'ı kullanabilirsiniz.
Dosyalarınız ve testleriniz rastgele sırada çalışırsa, performans iyileştirmeleri kaybolabilir. Ancak bu, yanlışlıkla önceki çalıştırmalara bağımlı olan testleri tespit etmenize yardımcı olabilir.
sequence.shuffle.files
- Tür:
boolean - Varsayılan:
false - CLI:
--sequence.shuffle.files,--sequence.shuffle.files=false
Dosyaların rastgele sıralanıp sıralanmayacağını belirler. Bu seçeneği etkinleştirirseniz, uzun süren testlerin öncelikli olarak başlamayacağını unutmayın.
sequence.shuffle.tests
- Tür:
boolean - Varsayılan:
false - CLI:
--sequence.shuffle.tests,--sequence.shuffle.tests=false
Testlerin rastgele sırada çalıştırılıp çalıştırılmayacağını belirler.
sequence.concurrent
- Tür:
boolean - Varsayılan:
false - CLI:
--sequence.concurrent,--sequence.concurrent=false
Testlerin paralel olarak çalışmasını istiyorsanız, bu seçeneği veya CLI argümanı --sequence.concurrent ile etkinleştirebilirsiniz.
sequence.seed*
- Tür:
number(sayı) - Varsayılan:
Date.now() - CLI:
--sequence.seed=1000
Testler rastgele sırada çalışıyorsa, rastgeleleştirme için kullanılacak çekirdeği ayarlar.
sequence.hooks
- Tür:
'stack' | 'list' | 'parallel' - Varsayılan:
'parallel' - CLI:
--sequence.hooks=<value>
Kancaların (hooks) yürütülme sırasını değiştirir.
stack, "after" kancalarını ters sırada sıralar, "before" 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 suite'lerdeki kancalar, mevcut suite'in kancalarından önce çalışmaya devam eder).
TIP
Bu seçenek onTestFinished'ı etkilemez. Her zaman ters sırada çağrılır.
sequence.setupFiles
- Tür:
'list' | 'parallel' - Varsayılan:
'parallel' - CLI:
--sequence.setupFiles=<value>
Kurulum dosyalarının (setup files) 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 (typechecking) test ortamını yapılandırma seçenekleri.
typecheck.enabled
- Tür:
boolean - Varsayılan:
false - CLI:
--typecheck,--typecheck.enabled
Normal testlerinizin yanı sıra tür denetimini etkinleştirin.
typecheck.only
- Tür:
boolean - Varsayılan:
false - CLI:
--typecheck.only
Tür denetimi etkinleştirildiğinde yalnızca tür denetimi testlerini çalıştırın. CLI kullanırken, bu seçenek otomatik olarak tür denetimini etkinleştirir.
typecheck.checker
- Tür:
'tsc' | 'vue-tsc' | string - Varsayılan:
tsc
Tür denetimi için hangi aracın kullanılacağını belirtir. Vitest, türe bağlı olarak, daha kolay ayrıştırma sağlamak için belirli parametrelerle bir işlem başlatır. Denetleyici (checker), tsc --noEmit --pretty false komutuyla aynı çıktı biçimini vermelidir.
Tür denetleyicisini kullanmak için ilgili paketi yüklemeniz gerekir:
tsciçintypescriptpaketi gereklidir.vue-tsciçinvue-tscpaketi gereklidir.
Ayrıca, tsc --noEmit --pretty false ile aynı çıktıyı üreten özel bir ikili dosya veya komut yolunu da belirtebilirsiniz.
typecheck.include
- Tür:
string[] - Varsayılan:
['**/*.{test,spec}-d.?(c|m)[jt]s?(x)']
Test dosyası olarak kabul edilecek dosyalar için glob deseni.
typecheck.exclude
- Tür:
string[] - Varsayılan:
['**/node_modules/**', '**/dist/**', '**/cypress/**', '**/.{idea,git,cache,output,temp}/**']
Test dosyası olarak kabul edilmeyecek 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 ayar onu geçersiz kılmaz.
typecheck.ignoreSourceErrors
- Tür:
boolean - Varsayılan:
false
Vitest, test dosyaları dışındaki kaynak kodunda hatalar bulsa bile testin başarısız sayılmamasını sağlar. Bu, test dışı hataların raporlanmasını engeller.
Varsayılan olarak, Vitest kaynak kodda bir hata bulursa, test suite'i 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(sayı) - Varsayılan:
300 - CLI:
--slow-test-threshold=<number>,--slowTestThreshold=<number>
Bir testin veya süitin yavaş kabul edilip sonuçlarda bu şekilde raporlanması için geçmesi gereken milisaniye sayısı.
chaiConfig
- Tür:
{ includeStack?, showDiff?, truncateThreshold? } - Varsayılan:
{ includeStack: false, showDiff: true, truncateThreshold: 40 }
Chai yapılandırmasına karşılık gelir.
chaiConfig.includeStack
- Tür:
boolean - Varsayılan:
false
Yığın izlemenin (stack trace) Assertion (iddia) hata mesajına dahil edilip edilmeyeceğini kontrol eder. Varsayılan false değeri, hata mesajındaki yığın izlemeyi gizler.
chaiConfig.showDiff
- Tür:
boolean - Varsayılan:
true
showDiff işaretinin oluşturulan AssertionError nesnelerine dahil edilip edilmeyeceğini kontrol eder. false değeri her zaman false olacaktır; true değeri, assertion bir farkın (diff) gösterilmesini istediğinde true olacaktır.
chaiConfig.truncateThreshold
- Tür:
number(sayı) - 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, özellikle büyük veri yapıları için, değer [ Array(3) ] veya { Object (prop1, prop2) } gibi bir ifadeyle değiştirilir. Tamamen kesmeyi devre dışı bırakmak için 0 olarak ayarlayın.
Bu yapılandırma seçeneği, test.each başlıklarındaki ve assertion hata mesajlarının içindeki değerlerin kesilmesini etkiler.
bail
- Tür:
number(sayı) - Varsayılan:
0 - CLI:
--bail=<value>
Belirli sayıda test başarısız olduğunda test yürütmesini durdurur.
Bu durum, yalnızca %100 başarılı derlemelerin hedeflendiği ve test hataları oluştuğunda test yürütmesinin mümkün olan en kısa sürede durdurulmasının istendiği CI süreçleri için uygun olabilir. bail seçeneği, hatalar oluştuğunda daha fazla testin çalışmasını engelleyerek CI çalıştırmalarını hızlandırmak için kullanılabilir.
retry
- Tür:
number(sayı) - Varsayılan:
0 - CLI:
--retry=<value>
Başarısız olursa testi belirli sayıda kez yeniden dener.
onConsoleLog*
- Tür:
(log: string, type: 'stdout' | 'stderr') => boolean | void
Testlerdeki console.log çağrıları 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 {
return !(log === 'message from third party library' && type === 'stdout');
},
},
});onStackTrace*
- Tür:
(error: Error, frame: ParsedStack) => boolean | void
Hataları işlerken her yığın izlemedeki her bir çerçeveye bir filtreleme işlevi uygulayın. İlk argüman olan error, standart bir Error ile aynı özelliklere sahip bir nesnedir, ancak gerçek bir Error örneği değildir.
Üçüncü taraf kitaplıklardan gelen yığın izleme çerçevelerini filtrelemek için yararlı olabilir.
import type { ParsedStack } from 'vitest';
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
onStackTrace(error: Error, { file }: ParsedStack): boolean | void {
// Eğer bir ReferenceError ile karşılaşırsak, tüm yığın izlemesini göster.
if (error.name === 'ReferenceError') return;
// Üçüncü taraf kitaplıklardan gelen tüm çerçeveleri reddet.
if (file.includes('node_modules')) return false;
},
},
});diff
- Tür:
string - CLI:
--diff=<value>
Fark (diff) arayüzü oluşturmak için kullanılacak bir fark yapılandırmasına giden yol. Fark görüntüsünü özelleştirmek istiyorsanız kullanışlıdır.
import type { DiffOptions } from 'vitest';
import c from 'tinyrainbow';
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',
},
});diff.truncateThreshold
- Tür:
number(sayı) - Varsayılan:
0
Görüntülenecek fark sonucunun maksimum uzunluğu. Bu eşiğin üzerindeki farklar kesilecektir. Varsayılan değer olan 0, kesme işleminin gerçekleşmemesi anlamına gelir.
diff.truncateAnnotation
- Tür:
string - Varsayılan:
'... Diff result is truncated'
Kesme işlemi yapılmışsa, fark sonucunun sonunda görüntülenecek açıklama.
diff.truncateAnnotationColor
- Tür:
DiffOptionsColor = (arg: string) => string - Varsayılan:
noColor = (string: string): string => string
Kesme açıklamasının rengi. Varsayılan olarak renksiz çıktı alınır.
fakeTimers
- Tür:
FakeTimerInstallOpts
Vitest'in vi.useFakeTimers() kullanırken @sinon/fake-timers'a ileteceği seçenekler.
fakeTimers.now
- Tür:
number | Date(sayı | Tarih) - Varsayılan:
Date.now()
Sahte zamanlayıcıları belirtilen Unix zaman damgası ile başlatır.
fakeTimers.toFake
- Tür:
('setTimeout' | 'clearTimeout' | 'setImmediate' | 'clearImmediate' | 'setInterval' | 'clearInterval' | 'Date' | 'nextTick' | 'hrtime' | 'requestAnimationFrame' | 'cancelAnimationFrame' | 'requestIdleCallback' | 'cancelIdleCallback' | 'performance' | 'queueMicrotask')[] - Varsayılan:
['setTimeout', 'clearTimeout', 'setImmediate', 'clearImmediate', 'setInterval', 'clearInterval', 'Date']
Sahte sürümleri oluşturulacak global yöntemlerin ve API'lerin adlarını içeren bir dizi.
Yalnızca setTimeout() ve nextTick()'i taklit etmek için, bu özelliği ['setTimeout', 'nextTick'] olarak belirtin.
Vitest --pool=forks kullanılarak node:child_process içinde çalıştırıldığında nextTick'in mock'lanması desteklenmez. NodeJS, node:child_process içinde dahili olarak process.nextTick kullanır ve taklit edildiğinde askıda kalır. nextTick'in mock'lanması, Vitest --pool=threads ile çalıştırıldığında desteklenir.
fakeTimers.loopLimit
- Tür:
number(sayı) - Varsayılan:
10_000
vi.runAllTimers() çağrıldığında çalıştırılacak maksimum zamanlayıcı sayısı.
fakeTimers.shouldAdvanceTime
- Tür:
boolean - Varsayılan:
false
@sinonjs/fake-timers'a, taklit edilen zamanı gerçek sistem zamanındaki değişime göre otomatik olarak artırmasını söyler.
fakeTimers.advanceTimeDelta
- Tür:
number(sayı) - Varsayılan:
20
Yalnızca shouldAdvanceTime: true ile kullanıldığında geçerlidir. Gerçek sistem zamanındaki her advanceTimeDelta milisaniyelik değişiklik için taklit edilen zamanı advanceTimeDelta milisaniye artırın.
fakeTimers.shouldClearNativeTimers
- Tip:
boolean - Varsayılan:
true
Sahte zamanlayıcılara, ilgili işleyicilerine devrederek "yerel" (yani sahte olmayan) zamanlayıcıları temizlemesini söyler. Devre dışı bırakıldığında, sahte zamanlayıcı oturumu başlatılmadan önce zamanlayıcılar mevcutsa potansiyel olarak beklenmeyen davranışlara yol açabilir.
workspace*
- Tür:
string - CLI:
--workspace=./file.js - Varsayılan: Yapılandırma dosyasına veya kök dizine yakın olan
vitest.{workspace,projects}.{js,ts,json}dosyaları
Kök'e göre bir çalışma alanı yapılandırma dosyasına giden yol.
isolate
- Tür:
boolean - Varsayılan:
true - CLI:
--no-isolate,--isolate=false
Testleri yalıtılmış bir ortamda çalıştırın. Bu seçeneğin vmThreads ve vmForks havuzları üzerinde bir etkisi yoktur.
Eğer kodunuz yan etkilere bağımlı değilse (ki bu genellikle node ortamına sahip projeler için geçerlidir), bu seçeneği devre dışı bırakmak performansı artırabilir.
TIP
poolOptions özelliğini kullanarak belirli havuzlar için yalıtımı devre dışı bırakabilirsiniz.
includeTaskLocation
- Tür:
boolean - Varsayılan:
false
Vitest API'si raporlayıcılarda görevleri alırken location özelliğinin eklenip eklenmeyeceğini belirler. Çok sayıda testiniz varsa, bu durum küçük bir performans düşüşüne neden olabilir.
location özelliği, orijinal dosyada test veya describe konumuna karşılık gelen column ve line değerlerini içerir.
Bu seçenek, açıkça devre dışı bırakmazsanız ve Vitest'i şunlardan biriyle çalıştırıyorsanız otomatik olarak etkinleştirilecektir:
- Vitest UI
- veya headless mod olmadan Tarayıcı Modu'nu kullanıyorsanız
- veya HTML Raporlayıcı'yı kullanıyorsanız
TIP
Buna dayanan özel kod kullanmıyorsanız bu seçeneğin bir etkisi yoktur.
snapshotEnvironment
- Tür:
string
Özel bir anlık görüntü (snapshot) ortamı uygulamasına giden yol. Bu, testlerinizi Node.js API'lerini desteklemeyen bir ortamda çalıştırıyorsanız kullanışlıdır. Bu seçeneğin bir tarayıcı çalıştırıcısı üzerinde bir etkisi yoktur.
Bu nesne SnapshotEnvironment yapısında olmalı ve anlık görüntü dosyalarını çözümlemek, okumak ve yazmak için kullanılır:
export interface SnapshotEnvironment {
getVersion: () => string;
getHeader: () => string;
resolvePath: (filepath: string) => Promise<string>;
resolveRawPath: (testPath: string, rawPath: string) => Promise<string>;
saveSnapshotFile: (filepath: string, snapshot: string) => Promise<void>;
readSnapshotFile: (filepath: string) => Promise<string | null>;
removeSnapshotFile: (filepath: string) => Promise<void>;
}API'nin yalnızca bir bölümünü geçersiz kılmanız gerekiyorsa, vitest/snapshot giriş noktasından varsayılan VitestSnapshotEnvironment'ı genişletebilirsiniz.
WARNING
Bu düşük seviyeli bir seçenektir ve yalnızca varsayılan Node.js API'lerine erişiminizin olmadığı gelişmiş durumlar için kullanılmalıdır.
Yalnızca anlık görüntü özelliğini yapılandırmanız gerekiyorsa, snapshotFormat veya resolveSnapshotPath seçeneklerini kullanın.
env
- Tür:
Partial<NodeJS.ProcessEnv>
Testler sırasında process.env ve import.meta.env üzerinde bulunan ortam değişkenleri. Bu değişkenler ana süreçte (örneğin globalSetup içinde) kullanılamaz.
expect
- Tür:
ExpectOptions
expect.requireAssertions
- Tür:
boolean - Varsayılan:
false
Her testin başında expect.hasAssertions() çağırmakla aynıdır. Bu, hiçbir testin yanlışlıkla geçmemesini sağlar.
TIP
Bu yalnızca Vitest'in expect ile çalışır. Eğer assert veya .should iddialarını kullanırsanız, bunlar sayılmayacak ve testiniz expect iddialarının eksikliği nedeniyle başarısız olacaktır.
Bunu değiştirmek için vi.setConfig({ expect: { requireAssertions: false } })'i çağırabilirsiniz. Ayar, vi.resetConfig manuel olarak çağrılana kadar her sonraki expect çağrısına uygulanacaktır.
expect.poll
expect.poll için genel yapılandırma seçenekleri. Bunlar, expect.poll(condition, options)'a aktarabileceğiniz aynı seçeneklerdir.
expect.poll.interval
- Tür:
number - Varsayılan:
50
Milisaniye cinsinden yoklama aralığı
expect.poll.timeout
- Tür:
number - Varsayılan:
1000
Milisaniye cinsinden yoklama zaman aşımı
printConsoleTrace
- Tür:
boolean - Varsayılan:
false
Herhangi bir console metodunu çağırırken her zaman konsol izlerini yazdırın. Bu, hata ayıklama için kullanışlıdır.