Vitest'i Yapılandırma
Vite kullanıyorsanız ve bir vite.config dosyanız varsa, Vitest bu dosyayı okuyarak eklentilerle uyum sağlar ve Vite uygulamanız için gerekli yapılandırmayı yapar. Testleriniz için farklı bir yapılandırma kullanmak isterseniz veya ana uygulamanız özellikle Vite'a bağlı değilse, aşağıdaki yöntemleri kullanabilirsiniz:
- Daha yüksek önceliğe sahip olacak ve
vite.config.tsdosyasındaki yapılandırmayı geçersiz kılacak birvitest.config.tsdosyası oluşturun. (Vitest, geleneksel JS ve TS uzantılarını destekler, ancakjsonuzantısını desteklemez.) Bu,vite.configdosyanızdaki tüm seçeneklerin yoksayılacağı anlamına gelir. - CLI'ye
--configseçeneğini geçirin, örneğinvitest --config ./path/to/vitest.config.ts. defineConfigüzerindeprocess.env.VITESTveyamodeözelliğini kullanarak (--modeile geçersiz kılınmazsatest/benchmarkolarak ayarlanır)vite.config.tsiçinde farklı yapılandırmaları koşullu olarak uygulayabilirsiniz.
vitest'in kendisini yapılandırmak için, Vite yapılandırmanıza test özelliğini ekleyin. Ayrıca, defineConfig'i vite'in kendisinden içe aktarıyorsanız, yapılandırma dosyanızın en üstüne bir üç eğik çizgi komutu kullanarak Vitest türlerine bir referans eklemeniz gerekecektir.
Yapılandırma Örneklerini Aç
vite'den defineConfig kullanırken şunları izlemelisiniz:
/// <reference types="vitest" />
import { defineConfig } from 'vite';
export default defineConfig({
test: {
// ... Seçenekleri buraya belirtin.
},
});<reference types="vitest" /> Vitest 4'te çalışmayı durduracak, ancak şimdiden vitest/config'e geçiş yapmaya başlayabilirsiniz:
/// <reference types="vitest/config" />
import { defineConfig } from 'vite';
export default defineConfig({
test: {
// ... Seçenekleri buraya belirtin.
},
});vitest/config'den defineConfig kullanırken şunları izlemelisiniz:
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
// ... Seçenekleri buraya belirtin.
},
});Gerekirse Vitest'in varsayılan seçeneklerini alıp genişletebilirsiniz:
import { configDefaults, defineConfig } from 'vitest/config';
export default defineConfig({
test: {
exclude: [...configDefaults.exclude, 'packages/template/*'],
},
});Ayrı bir vitest.config.js kullanırken, gerekirse Vite'ın seçeneklerini başka bir yapılandırma dosyasından da genişletebilirsiniz:
import { defineConfig, mergeConfig } from 'vitest/config';
import viteConfig from './vite.config';
export default mergeConfig(
viteConfig,
defineConfig({
test: {
exclude: ['packages/template/*'],
},
})
);Vite yapılandırmanız bir fonksiyon olarak tanımlanmışsa, yapılandırmayı şu şekilde 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/*'],
},
})
)
);WARNING
Bu sayfadaki tüm listelenen seçenekler yapılandırmanın içinde bir test özelliği içinde bulunur:
export default defineConfig({
test: {
exclude: [],
},
});Vitest, Vite yapılandırmasını kullandığı için, Vite'den herhangi bir yapılandırma seçeneğini de kullanabilirsiniz. Örneğin, genel değişkenleri tanımlamak için define veya takma adları tanımlamak için resolve.alias - bu seçenekler en üst düzeyde tanımlanmalıdır, bir test özelliği içinde değil.
Proje yapılandırması içinde desteklenmeyen yapılandırma seçeneklerinin yanında * işareti bulunur. Bu, yalnızca kök Vitest yapılandırmasında ayarlanabileceği anlamına gelir.
include
- Tip:
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 bir listesi.
NOT
Kapsam kullanırken, Vitest otomatik olarak test dosyalarını include desenlerini kapsamın varsayılan exclude desenlerine ekler. Bkz. coverage.exclude.
exclude
- Tip:
string[] - Varsayılan:
['**/node_modules/**', '**/dist/**', '**/cypress/**', '**/.{idea,git,cache,output,temp}/**', '**/{karma,rollup,webpack,vite,vitest,jest,ava,babel,nyc,cypress,tsup,build,eslint,prettier}.config.*'] - CLI:
vitest --exclude "**/excluded-file"
Test dosyalarınızdan hariç tutulacak glob desenlerinin bir listesi.
WARNING
Bu seçeneğin kapsam üzerinde bir etkisi yoktur. Kapsam raporundan belirli dosyaları kaldırmanız gerekiyorsa, coverage.exclude kullanın.
Bu, bir CLI bayrağıyla sağlandığında yapılandırmanızı geçersiz kılmayan tek seçenektir. --exclude bayrağı aracılığıyla eklenen tüm glob desenleri yapılandırmanın exclude'ine eklenecektir.
includeSource
- Tip:
string[] - Varsayılan:
[]
Kaynak içi test dosyaları için dahil edilecek glob desenleri.
Tanımlandığında, Vitest içinde import.meta.vitest bulunan tüm eşleşen dosyaları çalıştıracaktır.
name
- Tip:
string | { label: string, color?: LabelColor }
Test projesine veya Vitest sürecine özel bir ad atar. Ad, CLI ve UI'da görünür olacak ve Node.js API'sinde project.name aracılığıyla erişilebilir olacaktır.
CLI ve UI tarafından kullanılan renk, color özelliği olan bir nesne sağlayarak değiştirilebilir.
server
- Tip:
{ sourcemap?, deps?, ... }
Vite-Node sunucu seçenekleri.
server.sourcemap
- Tip:
'inline' | boolean - Varsayılan:
'inline'
Modüllere satır içi kaynak haritası enjekte eder.
server.debug
- Tip:
{ dumpModules?, loadDumppedModules? }
Vite-Node hata ayıklayıcı seçenekleri.
server.debug.dumpModules
- Tip:
boolean | string
Dönüştürülmüş modülü dosya sistemine kaydeder. Bir dize geçirmek, belirtilen yola dökülmesini sağlar.
server.debug.loadDumppedModules
- Tip:
boolean
Dökülmüş modülü dosya sisteminden mevcut olduğunda okur. Dosya sisteminden döküm sonucunu değiştirerek hata ayıklama için faydalıdır.
server.deps
- Tip:
{ external?, inline?, ... }
Bağımlılık çözümlemesinin işlenmesi.
server.deps.external
- Tip:
(string | RegExp)[] - Varsayılan:
[/\/node_modules\//]
Haricileştirme, Vite'ın paketi yerel Node'a bypass etmesi anlamına gelir. Haricileştirilmiş bağımlılıklar Vite'ın dönüştürücülerine ve çözümleyicilerine uygulanmayacak, 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 belirtilmeli 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ırsa, Vitest bunu paket adında değil, dosya yolunda uygular.
server.deps.inline
- Type:
(string | RegExp)[] | true - Default:
[]
Vite, satır içi modülleri işleyecektir. Bu, ESM formatında (Node'un işleyemediği) .js gönderen paketlerle başa çıkmak için faydalı olabilir.
Eğer true ise, her bağımlılık satır içine alınacaktır. ssr.noExternal kısmında belirtilen tüm bağımlılıklar varsayılan olarak satır içine alınacaktır.
server.deps.fallbackCJS
- Tip
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 faydalı olabilir.
Bu, bir paketin ESM ve CJS modunda farklı mantığa sahip olması durumunda bazı uyumsuzluklara yol açabilir.
server.deps.cacheDir
- Tip
string - Varsayılan:
'node_modules/.vite'
Önbellek dosyalarının kaydedileceği dizin.
deps
- Tip:
{ optimizer?, ... }
Bağımlılık çözümlemesinin işlenmesi.
deps.optimizer
- Tip:
{ ssr?, web? } - 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 performanslarını artırabilir.
Vitest, include içinde listelenen harici kütüphaneyle karşılaştığında, esbuild kullanılarak tek bir dosyada paketlenecek ve bir bütün modül olarak içe aktarılacaktır. Bunun birkaç nedeni vardır:
- Çok sayıda içe aktarma içeren paketleri içe aktarmak performans açısından maliyetlidir. Bunları tek bir dosyada paketleyerek çok zaman kazanabiliriz.
- UI kütüphanelerini içe aktarmak performans açısından maliyetlidir çünkü Node.js içinde çalışmak için tasarlanmamışlardır.
aliasyapılandırmanız artık paketlenmiş paketler içinde de geçerlidir.- Testlerinizdeki kod, tarayıcıda çalıştığına daha yakın çalışır.
Yalnızca deps.optimizer?.[mode].include seçeneğinde listelenen paketlerin paketlendiğini unutmayın (bazı eklentiler bunu Svelte gibi otomatik olarak doldurur). Mevcut seçenekler hakkında daha fazla bilgiyi Vite belgelerinde okuyabilirsiniz (Vitest disable ve noDiscovery seçeneklerini desteklemez). Varsayılan olarak, Vitest jsdom ve happy-dom ortamları için optimizer.web'i, node ve edge ortamları için optimizer.ssr'yi kullanır, ancak bu 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, ssr için ssr.optimizeDeps'i genişletecektir). deps.optimizer içinde include/exclude seçeneğini yeniden tanımlarsanız, testleri çalıştırırken optimizeDeps'inizi genişletecektir. Vitest, include'deki aynı seçenekleri, exclude içinde listelenmişlerse otomatik olarak kaldırır.
TIP
node_modules kodunuzu hata ayıklama için düzenleyemezsiniz, çü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
- Tip:
boolean - Varsayılan:
false
Bağımlılık optimizasyonunu etkinleştirin.
deps.web
- Tip:
{ 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çenekler bu ortamlar içindeki dosyaları etkilemeyecektir.
Genellikle, node_modules içindeki dosyalar haricileştirilir, ancak bu seçenekler server.deps.external içindeki dosyaları da etkiler.
deps.web.transformAssets
- Tip:
boolean - Varsayılan:
true
Vitest, varlık (.png, .svg, .jpg, vb.) dosyalarını işlemeli ve bunları Vite'ın tarayıcıda yaptığı gibi çözümlemeli midir?
Bu modül, sorgu belirtilmezse, varlığın yoluna eşit bir varsayılan dışa aktarmaya sahip olur.
deps.web.transformCss
- Tip:
boolean - Varsayılan:
true
Vitest, CSS (.css, .scss, .sass, vb.) dosyalarını işlemeli ve bunları Vite'ın tarayıcıda yaptığı gibi çözümlemeli midir?
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
- Tip:
RegExp | RegExp[] - Varsayılan:
[]
Dönüştürülmesi gereken harici dosyaları eşleştirmek için 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 ilgili seçenek devre dışı bırakılmadığı sürece.
deps.interopDefault
- Tip:
boolean - Varsayılan:
true
CJS modülünün varsayılanını adlandırılmış dışa aktarmalar olarak yorumlar. Bazı bağımlılıklar yalnızca CJS modüllerini paketler ve bir paket require sözdizimi 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 bu tür bağımlılıkları adlandırılmış dışa aktarmalar kullanarak 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 çalışan kodunuzdan ö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şlenmiyorsa bu davranışı manuel olarak devre dışı bırakabilirsiniz.
deps.moduleDirectories
- Tip:
string[] - Varsayılan:
['node_modules']
Modül dizinleri olarak ele alınması gereken dizinlerin bir listesi. Bu yapılandırma seçeneği vi.mock davranışını etkiler: fabrika sağlanmadığında ve taklit ettiğiniz şeyin yolu moduleDirectories değerlerinden biriyle eşleştiğinde, Vitest taklidi projenin kökünde bir __mocks__ klasörü arayarak çözmeye çalışacaktır.
Bu seçenek, bağımlılıkları haricileştirirken bir dosyanın modül olarak ele alınıp alınmayacağını da etkiler. Varsayılan olarak, Vitest harici modülleri yerel Node.js ile Vite dönüştürme adımını atlayarak içe aktarır.
Bu seçeneği ayarlamak, varsayılanı geçersiz kılacaktır, yine de node_modules'da paketleri aramak istiyorsanız, diğer seçeneklerle birlikte onu da dahil edin:
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
deps: {
moduleDirectories: ['node_modules', path.resolve('../../packages')],
},
},
});runner
- Tip:
VitestRunnerConstructor - Varsayılan: Testleri çalıştırırken
node, benchmarkları çalıştırırkenbenchmark
Özel bir test çalıştırıcısının yolu. Bu gelişmiş bir özelliktir ve özel kütüphane çalıştırıcılarıyla kullanılması önerilir. Daha fazla bilgiyi belgelerde bulabilirsiniz.
benchmark
- Tip:
{ include?, exclude?, ... }
vitest bench çalıştırılırken kullanılan seçenekler.
benchmark.include
- Tip:
string[] - Varsayılan:
['**/*.{bench,benchmark}.?(c|m)[jt]s?(x)']
Benchmark test dosyaları için dahil edilecek glob desenleri.
benchmark.exclude
- Tip:
string[] - Varsayılan:
['node_modules', 'dist', '.idea', '.git', '.cache']
Benchmark test dosyaları için hariç tutulacak glob desenleri.
benchmark.includeSource
- Tip:
string[] - Varsayılan:
[]
Kaynak içi benchmark test dosyaları için glob'ları dahil et. Bu seçenek includeSource ile benzerdir.
Tanımlandığında, Vitest içinde import.meta.vitest bulunan tüm eşleşen dosyaları çalıştıracaktır.
benchmark.reporters
- Tip:
Arrayable<BenchmarkBuiltinReporters | Reporter> - Varsayılan:
'default'
Çıktı için özel raporlayıcıyı belirtir. Bir veya daha fazla yerleşik rapor adı, raporlayıcı örnekleri ve/veya özel raporlayıcılara giden yolları içerebilir.
benchmark.outputFile
benchmark.outputJson yerine kullanımdan kaldırıldı.
benchmark.outputJson
- Tip:
string | undefined - Varsayılan:
undefined
Daha sonra --compare seçeneği için kullanılabilecek benchmark sonucunun depolanacağı dosya yolu.
Örneğin:
# ana dalın sonucunu kaydet
git checkout main
vitest bench --outputJson main.json
# bir dala geç ve ana dala karşılaştır
git checkout feature
vitest bench --compare main.jsonbenchmark.compare
- Tip:
string | undefined - Varsayılan:
undefined
Mevcut çalıştırmalarla karşılaştırmak için önceki bir benchmark sonucuna ait dosya yolu.
alias
- Tip:
Record<string, string> | Array<{ find: string | RegExp, replacement: string, customResolver?: ResolverFunction | ResolverObject }>
Testler içinde çalışırken özel takma adlar tanımlar. Bunlar resolve.alias'tan gelen takma adlarla birleştirilecektir.
WARNING
Vitest, testleri çalıştırmak için Vite SSR ilkellerini kullanır ve bunun bazı tuzakları vardır.
- Takma adlar yalnızca satır içi bir modül tarafından doğrudan
importanahtar kelimesiyle içe aktarılan modülleri etkiler (tüm kaynak kodu varsayılan olarak satır içidir). - Vitest,
requireçağrılarını takma adlandırmayı desteklemez. - Harici bir bağımlılığı takma adlandırıyorsanız (örn.
react->preact), haricileştirilmiş bağımlılıklar için çalışmasını sağlamak için gerçeknode_modulespaketlerini takma adlandırmak isteyebilirsiniz. Hem Yarn hem de pnpmnpm:öneki aracılığıyla takma adlandırmayı destekler.
globals
- Tip:
boolean - Varsayılan:
false - CLI:
--globals,--globals=false
Varsayılan olarak, vitest açıklık için genel API'ler sunmaz. API'leri Jest gibi genel olarak kullanmayı tercih ediyorsanız, CLI'ye --globals seçeneğini geçirebilir ya da yapılandırmaya globals: true ekleyebilirsiniz.
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
globals: true,
},
});TypeScript'in genel API'lerle çalışmasını sağlamak için, tsconfig.json dosyanızdaki types alanına vitest/globals eklenmelidir.
{
"compilerOptions": {
"types": ["vitest/globals"]
}
}Derlemenize daha fazla tür dahil etmek için typeRoots değerinizi yeniden tanımladıysanız, vitest/globals'ın bulunabilmesi için node_modules'u geri eklemeniz gerekir.
{
"compilerOptions": {
"typeRoots": ["./types", "./node_modules/@types", "./node_modules"],
"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.
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
- Tip:
'node' | 'jsdom' | 'happy-dom' | 'edge-runtime' | string - Varsayılan:
'node' - CLI:
--environment=<env>
Testlerin çalıştırılacağı ortam. Vitest'teki varsayılan ortam bir Node.js ortamıdır. Bir web uygulaması geliştiriyorsanız, bunun yerine jsdom veya happy-dom aracılığıyla tarayıcı benzeri bir ortam kullanabilirsiniz.
Edge fonksiyonları geliştiriyorsanız, edge-runtime ortamını kullanabilirsiniz.
TIP
Ortamı taklit etmeden tarayıcıda entegrasyon veya birim testleri çalıştırmak için Tarayıcı Modu kullanabilirsiniz.
Dosyanın en üstüne bir @vitest-environment docblock veya yorum ekleyerek, o dosyadaki tüm testler için kullanılacak başka bir ortam belirleyebilirsiniz:
Docblock stili:
/**
* @vitest-environment jsdom
*/
test('bu test dosyasında jsdom kullan', () => {
const element = document.createElement('div');
expect(element).not.toBeNull();
});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 de vardır:
/**
* @jest-environment jsdom
*/
test('bu test dosyasında jsdom kullan', () => {
const element = document.createElement('div');
expect(element).not.toBeNull();
});Vitest'i --isolate=false bayrağıyla çalıştırıyorsanız, testleriniz şu sırayla çalıştırılacaktır: node, jsdom, happy-dom, edge-runtime, özel ortamlar. Yani, aynı ortama sahip her test gruplandırılır, ancak yine de sıralı olarak çalışır.
0.23.0'dan itibaren, özel bir ortam da tanımlayabilirsiniz. Yerleşik olmayan bir ortam kullanıldığında, Vitest vitest-environment-${name} paketini yüklemeye çalışacaktır. Bu paket, Environment şeklinde 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 ortamla tüm testler çalıştırıldıktan sonra çağrılır
},
};
},
};Vitest ayrıca, yalnızca genişletmek istemeniz durumunda vitest/environments girişi aracılığıyla builtinEnvironments'ı da gösterir. Ortamları genişletme hakkında daha fazla bilgiyi rehberimizde okuyabilirsiniz.
TIP
jsdom ortamı, mevcut JSDOM örneğine eşit jsdom genel değişkenini gösterir. TypeScript'in bunu tanımasını istiyorsanız, bu ortamı kullandığınızda tsconfig.json dosyanıza vitest/jsdom ekleyebilirsiniz:
{
"compilerOptions": {
"types": ["vitest/jsdom"]
}
}environmentOptions
- Tip:
Record<'jsdom' | string, unknown> - Varsayılan:
{}
Bu seçenekler, mevcut environment öğesinin setup yöntemine aktarılır. Varsayılan olarak, test ortamınız olarak JSDOM kullanıyorsanız yalnızca JSDOM seçeneklerini yapılandırabilirsiniz.
environmentMatchGlobs
- Tip:
[string, EnvironmentName][] - Varsayılan:
[]
KULLANIMDAN KALDIRILDI
Bu API Vitest 3'te kullanımdan kaldırıldı. Bunun yerine farklı yapılandırmalar tanımlamak için projeler kullanın.
export default defineConfig({
test: {
environmentMatchGlobs: [
['./*.jsdom.test.ts', 'jsdom'],
],
projects: [
{
extends: true,
test: {
environment: 'jsdom',
},
},
],
},
})Globlara göre ortamı otomatik olarak atar. İlk eşleşme kullanılı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 uzantılı tüm testler edge-runtime'da çalışacak
['**/*.edge.test.ts', 'edge-runtime'],
// ...
],
},
});poolMatchGlobs
- Tip:
[string, 'threads' | 'forks' | 'vmThreads' | 'vmForks' | 'typescript'][] - Varsayılan:
[]
KULLANIMDAN KALDIRILDI
Bu API Vitest 3'te kullanımdan kaldırıldı. Bunun yerine farklı yapılandırmalar tanımlamak için projeler kullanın:
export default defineConfig({
test: {
poolMatchGlobs: [
['./*.threads.test.ts', 'threads'],
],
projects: [
{
test: {
extends: true,
pool: 'threads',
},
},
],
},
})Testlerin çalışacağı havuzu globlara göre otomatik olarak atar. İ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, sanki onlar için `--pool=threads` 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ışacaktır
// ...
],
},
});update*
- Tip:
boolean - Varsayılan:
false - CLI:
-u,--update,--update=false
Anlık görüntü dosyalarını günceller. Bu, değişen tüm anlık görüntüleri günceller ve eski olanları siler.
watch*
- Tip:
boolean - Varsayılan:
!process.env.CI && process.stdin.isTTY - CLI:
-w,--watch,--watch=false
İzleme modunu etkinleştirir.
Etkileşimli ortamlarda, --run açıkça belirtilmediği sürece bu varsayılandır.
CI'da veya etkileşimli olmayan bir kabuktan çalıştırıldığında, "izleme" modu varsayılan değildir, ancak bu bayrakla açıkça etkinleştirilebilir.
watchTriggerPatterns 3.2.0+ *
- Tip:
WatcherTriggerPattern[]
Vitest, statik ve dinamik import ifadeleriyle oluşturulan modül grafiğine göre testleri yeniden çalıştırır. Ancak, dosya sisteminden okuma yapıyorsanız veya bir proxy'den veri alıyorsanız, Vitest bu bağımlılıkları algılayamaz.
Bu testleri doğru bir şekilde yeniden çalıştırmak için, bir regex deseni ve çalıştırılacak test dosyalarının bir listesini döndüren bir fonksiyon tanımlanabilir.
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
watchTriggerPatterns: [
{
pattern: /^src\/(mailers|templates)\/(.*)\.(ts|html|txt)$/,
testToRun: (id, match) => {
// kök değerine göre
return `./api/tests/mailers/${match[2]}.test.ts`;
},
},
],
},
});WARNING
Döndürülen dosyalar mutlak veya köke göre olmalıdır. Bunun genel bir seçenek olduğunu ve proje yapılandırmaları içinde kullanılamayacağını unutmayın.
root
- Tip:
string - CLI:
-r <path>,--root=<path>
Projenin kök dizini.
dir
- Tip:
string - CLI:
--dir=<path> - Varsayılan:
rootile aynı
Test dosyalarını taramak için kullanılacak temel dizin. Kökünüz tüm projeyi kapsıyorsa test keşfini hızlandırmak için bu seçeneği belirtebilirsiniz.
reporters*
- Tip:
Reporter | Reporter[] - Varsayılan:
'default' - CLI:
--reporter=<name>,--reporter=<name1> --reporter=<name2>
Çıktı için özel raporlayıcıları belirtir. Raporlayıcılar bir Raporlayıcı örneği, yerleşik raporlayıcıları seçmek için bir dize veya özel bir uygulamaya giden bir yol olabilir (örn. './path/to/reporter.ts', '@scope/reporter').
outputFile*
- Tip:
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 yazar. Bir dize yerine bir nesne sağlayarak birden çok raporlayıcı kullanırken ayrı ayrı çıktıları tanımlayabilirsiniz.
pool*
- Tip:
'threads' | 'forks' | 'vmThreads' | 'vmForks' - Varsayılan:
'forks' - CLI:
--pool=threads
Testlerin çalıştırılacağı havuz.
threads*
tinypool ( Piscina'nın hafif bir çatalı) kullanarak çoklu iş parçacığını etkinleştirin. İş parçacığı kullanırken process.chdir() gibi process API'lerini kullanamazsınız. Prisma, bcrypt ve canvas gibi yerel dillerde yazılmış bazı kütüphaneler, birden çok iş parçacığında çalışırken sorunlar yaşar ve segfault'lara neden olur. Bu durumlarda bunun yerine forks havuzunu kullanmanız tavsiye edilir.
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 havuzundaki kadar hızlı değildir. process.chdir() gibi işlemle ilgili API'ler forks havuzunda mevcuttur.
vmThreads*
Testleri threads havuzunda VM bağlamı (bir sanal ortam içinde) kullanarak çalıştırır.
Bu, testlerin daha hızlı çalışmasını sağlar; ancak VM modülü, ESM kodu çalıştırırken kararsızdır. Testleriniz bellek sızıntısı yapabilir; bununla mücadele etmek için poolOptions.vmThreads.memoryLimit değerini manuel olarak düzenlemeyi 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,pathvb. 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ılan hata yapıcısından farklı bir Hata yapıcısına başvuracaktır:
try {
fs.writeFileSync('/doesnt exist');
} catch (err) {
console.log(err instanceof Error); // false
}- ES modüllerini içe aktarmak, onları 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şim, sanal ortamda daha uzun zaman alır.
Bu seçeneği kullanırken bu sorunların farkında olun. Vitest ekibi kendi tarafımızda hiçbir sorunu çö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 havuzundaki kadar hızlı değildir. process.chdir() gibi işlemle ilgili API'ler vmForks havuzunda mevcuttur. Lütfen bu havuzun vmThreads'da listelenen aynı tuzaklara sahip olduğunu unutmayınız.
poolOptions*
- Tip:
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 buraya
},
},
},
});poolOptions.threads.maxThreads*
- Tip:
number | string - Varsayılan: mevcut CPU'lar
İş parçacıklarının maksimum sayısı veya yüzdesi. VITEST_MAX_THREADS ortam değişkenini de kullanabilirsiniz.
poolOptions.threads.minThreads*
- Tip:
number | string - Varsayılan: mevcut CPU'lar
İş parçacıklarının minimum sayısı veya yüzdesi. VITEST_MIN_THREADS ortam değişkenini de kullanabilirsiniz.
poolOptions.threads.singleThread
- Tip:
boolean - Varsayılan:
false
Aynı ortama sahip tüm testleri tek bir worker iş parçacığı içinde çalıştırır. Bu, yerleşik modül izolasyonunu 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 testleri birbiri ardına çalıştırmaya zorlayacak olsa da, bu seçenek Jest'in --runInBand seçeneğinden farklıdır. Vitest, worker'ları yalnızca testleri paralel çalıştırmak için değil, aynı zamanda izolasyon sağlamak için de kullanır. Bu seçeneği devre dışı bırakarak, testleriniz sıralı olarak çalışacak, ancak aynı genel bağlamda çalışacak, bu nedenle izolasyonu kendiniz sağlamanız gerekir.
Bu, genel duruma güveniyorsanız (ön uç çerçeveleri genellikle yapar) veya kodunuzun her test için ayrı ayrı tanımlanmış bir ortama güveniyorsa çeşitli sorunlara yol açabilir. Ancak, genel duruma mutlaka güvenmeyen veya bunu kolayca atlayabilen testleriniz için bir hız artışı (3 kata kadar daha hızlı) olabilir.
poolOptions.threads.useAtomics*
- Tip:
boolean - Varsayılan:
false
İş parçacıklarını senkronize etmek için Atomics kullanır.
Bu, bazı durumlarda performansı artırabilir, ancak eski Node sürümlerinde segfault'a yol açabilir.
poolOptions.threads.isolate
- Type:
boolean - Default:
true
Her test dosyası için ortamı izole edin.
poolOptions.threads.execArgv*
- Tip:
string[] - Varsayılan:
[]
İş parçacıklarındaki node'a ek argümanlar geçirir. Daha fazla bilgi için Command-line API | Node.js adresine bakın.
WARNING
Kullanırken dikkatli olun, bazı seçenekler worker'ı çökertebilir, örn. --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: {
// Çatallarla ilgili seçenekler buraya
},
},
},
});poolOptions.forks.maxForks*
- Tip:
number | string - Varsayılan: mevcut CPU'lar
Çatalların maksimum sayısı veya yüzdesi. VITEST_MAX_FORKS ortam değişkenini de kullanabilirsiniz.
poolOptions.forks.minForks*
- Tip:
number | string - Varsayılan: mevcut CPU'lar
Çatalların minimum sayısı veya yüzdesi. VITEST_MIN_FORKS ortam değişkenini de kullanabilirsiniz.
poolOptions.forks.isolate
- Tip:
boolean - Varsayılan:
true
Her test dosyası için ortamı izole eder.
poolOptions.forks.singleFork
- Tip:
boolean - Varsayılan:
false
Aynı ortama sahip tüm testleri tek bir alt işlem içinde çalıştırır. Bu, yerleşik modül izolasyonunu devre dışı bırakacaktı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 testleri birbiri ardına çalıştırmaya zorlayacak olsa da, bu seçenek Jest'in --runInBand seçeneğinden farklıdır. Vitest, alt süreçleri yalnızca testleri paralel çalıştırmak için değil, aynı zamanda izolasyon sağlamak için de kullanır. Bu seçeneği devre dışı bırakarak, testleriniz sıralı olarak çalışacak, ancak aynı genel bağlamda çalışacak, bu nedenle izolasyonu kendiniz sağlamanız gerekir.
Bu, genel duruma güveniyorsanız (ön uç çerçeveleri genellikle yapar) veya kodunuzun her test için ayrı ayrı tanımlanmış bir ortama güveniyorsa çeşitli sorunlara yol açabilir. Ancak, genel duruma mutlaka güvenmeyen veya bunu kolayca atlayabilen testleriniz için bir hız artışı (3 kata kadar daha hızlı) olabilir.
poolOptions.forks.execArgv*
- Tip:
string[] - Varsayılan:
[]
Alt süreçlerdeki node işlemine ek argümanlar geçirir. Daha fazla bilgi için Command-line API | Node.js adresine bakın.
WARNING
Kullanırken dikkatli olun, bazı seçenekler worker'ı çökertebilir, örn. --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 buraya
},
},
},
});poolOptions.vmThreads.maxThreads*
- Tip:
number | string - Varsayılan: mevcut CPU'lar
İş parçacıklarının maksimum sayısı veya yüzdesi. VITEST_MAX_THREADS ortam değişkenini de kullanabilirsiniz.
poolOptions.vmThreads.minThreads*
- Tip:
number | string - Varsayılan: mevcut CPU'lar
İş parçacıklarının minimum sayısı veya yüzdesi. VITEST_MIN_THREADS ortam değişkenini de kullanabilirsiniz.
poolOptions.vmThreads.memoryLimit*
- Tip:
string | number - Varsayılan:
1 / CPU Çekirdekleri
Worker'ların geri dönüştürülmeden önce kullanabileceği bellek sınırını belirtir. Bu değer ortamınıza büyük ölçüde bağlıdır, bu nedenle varsayılan değere güvenmek yerine manuel olarak belirtilmesi önerilir.
TIP
Uygulama Jest'in workerIdleMemoryLimit özelliğine dayanmaktadır.
Sınır çeşitli şekillerde belirtilebilir ve sonuç ne olursa olsun Math.floor tam sayıya dönüştürmek için kullanılır:
<= 1- Değerin sistem belleğinin yüzdesi olduğu varsayılır. Yani 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 yüzdesi100KB,65MB, vb. - Sabit bir bellek sınırını belirtmek için birimlerle.K/KB- Kilobayt (x1000)KiB- Kibibayt (x1024)M/MB- Megabayt -MiB- MebibaytG/GB- Gigabayt -GiB- Gibibayt
WARNING
Yüzde tabanlı bellek sınırı, yanlış sistem belleği rapor edildiği için Linux CircleCI'da çalışmamaktadır worker'larında.
poolOptions.vmThreads.useAtomics*
- Tip:
boolean - Varsayılan:
false
İş parçacıklarını senkronize etmek için Atomics kullanır.
Bu, bazı durumlarda performansı artırabilir, ancak eski Node sürümlerinde segfault'a yol açabilir.
poolOptions.vmThreads.execArgv*
- Tip:
string[] - Varsayılan:
[]
VM bağlamındaki node işlemine ek argümanlar geçirir. Daha fazla bilgi için Command-line API | Node.js adresine bakın.
WARNING
Kullanırken dikkatli olun, bazı seçenekler worker'ı çökertebilir, örn. --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 çatallarıyla ilgili seçenekler buraya
},
},
},
});poolOptions.vmForks.maxForks*
- Tip:
number | string - Varsayılan: mevcut CPU'lar
Çatalların maksimum sayısı veya yüzdesi. VITEST_MAX_FORKS ortam değişkenini de kullanabilirsiniz.
poolOptions.vmForks.minForks*
- Tip:
number | string - Varsayılan: mevcut CPU'lar
Çatalların minimum sayısı veya yüzdesi. VITEST_MIN_FORKS ortam değişkenini de kullanabilirsiniz.
poolOptions.vmForks.memoryLimit*
- Tip:
string | number - Varsayılan:
1 / CPU Çekirdekleri
Worker'ların geri dönüştürülmeden önce bellek sınırını belirtir. Bu değer ortamınıza büyük ölçüde bağlıdır, bu nedenle varsayılan değere güvenmek yerine manuel olarak belirtmek daha iyidir. Değerin nasıl hesaplandığı poolOptions.vmThreads.memoryLimit bölümünde açıklanmıştır.
poolOptions.vmForks.execArgv*
- Tip:
string[] - Varsayılan:
[]
VM bağlamındaki node işlemine ek argümanlar geçirir. Daha fazla bilgi için Command-line API | Node.js adresine bakın.
WARNING
Kullanırken dikkatli olun, bazı seçenekler worker'ı çökertebilir, örn. --prof, --title. Bkz. https://github.com/nodejs/node/issues/41103.
fileParallelism*
- Tip:
boolean - Varsayılan:
true - CLI:
--no-file-parallelism,--fileParallelism=false
Tüm test dosyaları paralel olarak çalıştırılmalı mı? Bunu false olarak ayarlamak, maxWorkers ve minWorkers seçeneklerini 1 olarak geçersiz kılar.
TIP
Bu seçeneğin, aynı dosyada çalışan testler üzerinde bir etkisi yoktur. Bunları paralel çalıştırmak istiyorsanız, describe üzerinde veya bir yapılandırma aracılığıyla concurrent seçeneğini kullanın.
maxWorkers*
- Tip:
number | string
Testleri çalıştırmak için kullanılabilecek maksimum worker sayısı veya yüzdesi. poolOptions.{threads,vmThreads}.maxThreads/poolOptions.forks.maxForks daha yüksek önceliğe sahiptir.
minWorkers*
- Tip:
number | string
Testleri çalıştırmak için kullanılabilecek minimum worker sayısı veya yüzdesi. poolOptions.{threads,vmThreads}.minThreads/poolOptions.forks.minForks daha yüksek önceliğe sahiptir.
testTimeout
- Tip:
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ı süresi. Zaman aşımını tamamen devre dışı bırakmak için 0 kullanılır.
hookTimeout
- Tip:
number - Varsayılan: Node.js'de
10_000,browser.enabledtrueise30_000 - CLI:
--hook-timeout=10000,--hookTimeout=10000
Bir kancanın milisaniye cinsinden varsayılan zaman aşımı süresi. Zaman aşımını tamamen devre dışı bırakmak için 0 kullanılır.
teardownTimeout*
- Tip:
number - Varsayılan:
10000 - CLI:
--teardown-timeout=5000,--teardownTimeout=5000
Vitest kapanırken kapanmayı beklemek için milisaniye cinsinden varsayılan zaman aşımı süresi.
silent*
- Tip:
boolean | 'passed-only' - Varsayılan:
false - CLI:
--silent,--silent=false
Testlerden gelen konsol çıktısını sessize alır.
Yalnızca başarısız olan testlerden gelen günlükleri görmek için 'passed-only' kullanılır. Başarısız olan testlerden gelen günlükler, test bittikten sonra yazdırılır.
setupFiles
- Tip:
string | string[]
Kurulum dosyalarının yolunu belirtir. Her test dosyasından önce çalıştırılırlar.
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 içinde process.env.VITEST_POOL_ID (tam sayı benzeri dize) kullanılabilir.
TIP
Unutmayın ki, --isolate=false çalıştırıyorsanız, bu kurulum dosyası aynı genel kapsamda birden çok kez çalıştırılır. Yani, her testten önce aynı genel nesneye erişirsiniz, bu yüzden ihtiyacınızdan fazlasını yapmadığınızdan emin olmalısınız.
Ö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;
}
// kancalar her süitten önce sıfırlanır
afterEach(() => {
cleanup();
});
globalThis.resetBeforeEachTest = true;provide 2.1.0+
- Tip:
Partial<ProvidedContext>
inject yöntemini kullanarak testlerinizde erişilebilecek değerleri tanımlar.
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
provide: {
API_KEY: '123',
},
},
});import { expect, inject, test } from 'vitest';
test('api anahtarı tanımlı', () => {
expect(inject('API_KEY')).toBe('123');
});WARNING
Özellikler dizeler olmalı ve değerler serileştirilebilir olmalıdır, çünkü bu nesne farklı süreçler arasında aktarılacaktır.
TIP
TypeScript kullanıyorsanız, tür güvenli erişim için ProvidedContext türünü genişletmeniz gerekir:
declare module 'vitest' {
export interface ProvidedContext {
API_KEY: string;
}
}
// bu dosyayı bir modül olarak işaretleyin, böylece genişletme doğru çalışır
export {};globalSetup
- Tip:
string | string[]
Proje köküne göre genel kurulum dosyalarının yolunu belirtir.
Genel bir kurulum dosyası, setup ve teardown adlı fonksiyonları veya bir teardown fonksiyonu döndüren bir default fonksiyonunu dışa aktarabilir (örnek).
INFO
Birden fazla globalSetup dosyası mümkündür. setup ve teardown, teardown ters sırada olmak üzere sıralı olarak yürütülür.
WARNING
Genel kurulum, yalnızca en az bir çalışan test varsa yürütülür. Bu, genel kurulumun izleme modunda bir test dosyası değiştirildikten sonra çalışmaya başlayabileceği anlamına gelir (test dosyası, çalışmadan önce genel kurulumun bitmesini bekler).
Genel kurulumun farklı bir genel kapsamda çalıştığını unutmayınız, bu nedenle testleriniz burada tanımlanan değişkenlere erişemez. Ancak, serileştirilebilir verileri provide yöntemi aracılığıyla testlere aktarabilirsiniz:
import { inject } from 'vitest';
inject('wsPort') === 3000;import type { TestProject } from 'vitest/node';
export default function setup(project: TestProject) {
project.provide('wsPort', 3000);
}
declare module 'vitest' {
export interface ProvidedContext {
wsPort: number;
}
}import type { GlobalSetupContext } from 'vitest/node';
export default function setup({ provide }: GlobalSetupContext) {
provide('wsPort', 3000);
}
declare module 'vitest' {
export interface ProvidedContext {
wsPort: number;
}
}Vitest 3'ten itibaren, Vitest testleri yeniden çalıştırdığında çağrılacak özel bir geri çağırma fonksiyonu tanımlanabilir. Fonksiyon eşzamansız ise, çalıştırıcı testleri yürütmeden önce tamamlanmasını bekler. project'i { onTestsRerun } gibi parçalara ayıramayacağınızı unutmayın, çünkü bağlama bağlıdır.
import type { TestProject } from 'vitest/node';
export default function setup(project: TestProject) {
project.onTestsRerun(async () => {
await restartDb();
});
}forceRerunTriggers*
- Tip:
string[] - Varsayılan:
['**/package.json/**', '**/vitest.config.*/**', '**/vite.config.*/**']
Tüm test süitesinin yeniden çalıştırılmasını tetikleyecek dosya yollarının glob deseni. --changed argümanıyla eşleştirildiğinde, tetikleyici git diff'te bulunursa tüm test süitesini çalıştırır.
CLI komutlarını çağırmayı test ediyorsanız faydalıdır, çünkü Vite bir modül grafiği oluşturamaz:
test('bir betik yürüt', 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 server.watch.ignored tarafından hariç tutulmadığından emin olun.
coverage*
Kapsam toplama için v8, istanbul veya özel bir kapsam çözümü kullanılabilir.
Kapsam seçeneklerini CLI'ye nokta notasyonuyla sağlayabilirsiniz:
npx vitest --coverage.enabled --coverage.provider=istanbul --coverage.allWARNING
Kapsam seçeneklerini nokta notasyonuyla kullanıyorsanız, --coverage.enabled belirtmeyi unutmayın. Bu durumda tek bir --coverage seçeneği sağlamayın.
coverage.provider
- Tip:
'v8' | 'istanbul' | 'custom' - Varsayılan:
'v8' - CLI:
--coverage.provider=<provider>
Kapsam toplama aracı olarak provider'ı kullanın.
coverage.enabled
- Tip:
boolean - Varsayılan:
false - Sağlayıcılar için kullanılabilir:
'v8' | 'istanbul' - CLI:
--coverage.enabled,--coverage.enabled=false
Kapsam toplamayı etkinleştirir. --coverage CLI seçeneği kullanılarak geçersiz kılınabilir.
coverage.include
- Tip:
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 desenleri listesi.
coverage.extension
- Tip:
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
- Tip:
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>
Kapsamdan hariç tutulacak dosyaların glob desenleri listesi.
Bu seçenek tüm varsayılan seçenekleri geçersiz kılar. Yeni desenleri yoksaymak için varsayılan seçenekleri genişletin:
import { coverageConfigDefaults, defineConfig } from 'vitest/config';
export default defineConfig({
test: {
coverage: {
exclude: ['**/custom-pattern/**', ...coverageConfigDefaults.exclude],
},
},
});NOT
Vitest, test dosyalarını include desenlerini otomatik olarak coverage.exclude'e ekler. Test dosyalarının kapsamını göstermek mümkün değildir.
coverage.all
- Tip:
boolean - Varsayılan:
true - Sağlayıcılar için kullanılabilir:
'v8' | 'istanbul' - CLI:
--coverage.all,--coverage.all=false
Test edilmemişler de dahil olmak üzere tüm dosyaların rapora dahil edilip edilmeyeceği.
coverage.clean
- Tip:
boolean - Varsayılan:
true - Sağlayıcılar için kullanılabilir:
'v8' | 'istanbul' - CLI:
--coverage.clean,--coverage.clean=false
Testleri çalıştırmadan önce kapsam sonuçlarını temizler.
coverage.cleanOnRerun
- Tip:
boolean - Varsayılan:
true - Sağlayıcılar için kullanılabilir:
'v8' | 'istanbul' - CLI:
--coverage.cleanOnRerun,--coverage.cleanOnRerun=false
İzleme yeniden çalıştırmasında kapsam raporunu temizler. İzleme modunda önceki çalıştırmadan gelen kapsam sonuçlarını korumak için false olarak ayarlanır.
coverage.reportsDirectory
- Tip:
string - Varsayılan:
'./coverage' - Sağlayıcılar için kullanılabilir:
'v8' | 'istanbul' - CLI:
--coverage.reportsDirectory=<path>
WARNING
coverage.clean etkinleştirilirse (varsayılan değer), Vitest bu dizini testleri çalıştırmadan önce silecektir.
Kapsam raporunun yazılacağı dizini belirtir.
HTML raporlayıcı çıktısında kapsam raporunu önizlemek için, bu seçenek html rapor dizininin bir alt dizini olarak ayarlanmalıdır (örneğin ./html/coverage).
coverage.reporter
- Tip:
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ını belirtir. Tüm raporlayıcıların ayrıntılı listesi için istanbul belgelerine bakınız. Raporlayıcıya özgü seçenekler hakkında ayrıntılar için @types/istanbul-reporter adresine bakınız.
Raporlayıcının üç farklı türü vardır:
- Tek bir raporlayıcı:
{ reporter: 'html' } - Seçeneksiz 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'], ]; }
Özel kapsam raporlayıcıları da geçirilebilir. Daha fazla bilgi için Rehber - Özel Kapsam Raporlayıcı bölümüne bakınız.
{
reporter: [
// NPM paketinin adını kullanarak raporlayıcıyı belirtin
'@vitest/custom-coverage-reporter',
['@vitest/custom-coverage-reporter', { someOption: true }],
// Yerel yolu kullanarak raporlayıcıyı belirtin
'/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 Kapsamı bölümüne bakın.
coverage.reportOnFailure
- Tip:
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şturur.
coverage.allowExternal
- Tip:
boolean - Varsayılan:
false - Sağlayıcılar için kullanılabilir:
'v8' | 'istanbul' - CLI:
--coverage.allowExternal,--coverage.allowExternal=false
Proje root dışındaki dosyaların kapsamını toplar.
coverage.excludeAfterRemap 2.1.0+
- Tip:
boolean - Varsayılan:
false - Sağlayıcılar için kullanılabilir:
'v8' | 'istanbul' - CLI:
--coverage.excludeAfterRemap,--coverage.excludeAfterRemap=false
Kapsam orijinal kaynaklara yeniden eşlendikten sonra hariç tutmaları tekrar uygular. Bu, kaynak dosyalarınızın dönüştürüldüğü ve kaynak olmayan dosyaların kaynak haritalarını içerebileceği durumlarda faydalıdır.
coverage.exclude desenlerinizle eşleşse bile raporda görünen dosyalar görüyorsanız bu seçeneği kullanınız.
coverage.skipFull
- Tip:
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östermez.
coverage.thresholds
Kapsam eşikleri için seçenekler.
Bir eşik pozitif bir sayıya ayarlanırsa, gerekli minimum kapsam yüzdesi olarak yorumlanır. Örneğin, satır eşiğini 90 olarak ayarlamak, satırların %90'ının kapsanması gerektiği anlamına gelir.
Bir eşik negatif bir sayıya ayarlanırsa, izin verilen maksimum kapsanmamış öğe sayısı olarak ele alınır. Örneğin, satır eşiğini -10 olarak ayarlamak, en fazla 10 satırın kapsanmamış olabileceği anlamına gelir.
{
coverage: {
thresholds: {
// %90 fonksiyon kapsamı gerektirir
functions: 90,
// En fazla 10 satırın kapsanmamış olmasını gerektirir
lines: -10,
}
}
}coverage.thresholds.lines
- Tip:
number - Sağlayıcılar için kullanılabilir:
'v8' | 'istanbul' - CLI:
--coverage.thresholds.lines=<number>
Satırlar için genel eşik.
coverage.thresholds.functions
- Tip:
number - Sağlayıcılar için kullanılabilir:
'v8' | 'istanbul' - CLI:
--coverage.thresholds.functions=<number>
Fonksiyonlar için genel eşik.
coverage.thresholds.branches
- Tip:
number - Sağlayıcılar için kullanılabilir:
'v8' | 'istanbul' - CLI:
--coverage.thresholds.branches=<number>
Dallar için genel eşik.
coverage.thresholds.statements
- Tip:
number - Sağlayıcılar için kullanılabilir:
'v8' | 'istanbul' - CLI:
--coverage.thresholds.statements=<number>
İfadeler için genel eşik.
coverage.thresholds.perFile
- Tip:
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şikleri kontrol eder.
coverage.thresholds.autoUpdate
- Tip:
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şiklerden daha iyiyse, lines, functions, branches ve statements tüm eşik değerlerini yapılandırma dosyasına günceller. Bu seçenek, kapsam iyileştirildiğinde eşikleri korumaya katkı sağlar.
coverage.thresholds.100
- Tip:
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 ayarlar. --coverage.thresholds.lines 100 --coverage.thresholds.functions 100 --coverage.thresholds.branches 100 --coverage.thresholds.statements 100 için kısayol.
coverage.thresholds[glob-pattern]
- Tip:
{ 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şikleri ayarlar.
NOT
Vitest, glob desenleriyle kapsananlar da dahil olmak üzere tüm dosyaları genel kapsam eşiklerine sayar. Bu, Jest davranışından farklıdır.
{
coverage: {
thresholds: {
// Tüm dosyalar için eşikler
functions: 95,
branches: 70,
// Eşleşen glob deseni için eşikler
'src/utils/**.ts': {
statements: 95,
functions: 90,
branches: 85,
lines: 80,
},
// Bu desenle eşleşen dosyalar yalnızca satır eşiklerine sahip olacaktır.
// Genel eşikler devralınmaz.
'**/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 deseniyle eşleşen dosyalar için eşikleri 100'e ayarlar.
{
coverage: {
thresholds: {
// Tüm dosyalar için eşikler
functions: 95,
branches: 70,
// Eşleşen glob deseni için eşikler
'src/utils/**.ts': { 100: true },
'**/math.ts': { 100: true }
}
}
}coverage.ignoreEmptyLines
- Tip:
boolean - Varsayılan:
true(v1'defalse) - Sağlayıcılar için kullanılabilir:
'v8' - CLI:
--coverage.ignoreEmptyLines=<boolean>
Boş satırları, yorumları ve diğer çalışma zamanı dışı kodları, örn. Typescript türlerini yoksayar. experimentalAstAwareRemapping: false gerektirir.
Bu seçenek yalnızca kullanılan derleyici, dönüştürülmüş koddan yorumları ve diğer çalışma zamanı dışı kodları kaldırırsa geçerlidir. 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: {
// Kod kapsamından yorumları kaldırmak için tüm dosyaları ESBuild ile dönüştürün.
// `test.coverage.ignoreEmptyLines`'ın çalışması için gereklidir:
include: ['**/*.js', '**/*.jsx', '**/*.mjs', '**/*.ts', '**/*.tsx'],
},
test: {
coverage: {
provider: 'v8',
ignoreEmptyLines: true,
},
},
});coverage.experimentalAstAwareRemapping
- Tip:
boolean - Varsayılan:
false - Sağlayıcılar için kullanılabilir:
'v8' - CLI:
--coverage.experimentalAstAwareRemapping=<boolean>
Deneysel AST tabanlı analizle kapsamı yeniden eşler. Varsayılan moda kıyasla daha doğru sonuçlar sunar.
coverage.ignoreClassMethods
- Tip:
string[] - Varsayılan:
[] - Sağlayıcılar için kullanılabilir:
'istanbul' - CLI:
--coverage.ignoreClassMethods=<method>
Kapsam için yoksayılacak sınıf yöntemi adlarının dizisi olarak ayarlanır. Daha fazla bilgi için istanbul belgelerine bakın.
coverage.watermarks
- Tip:
{
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 filigranları belirtir. Daha fazla bilgi için istanbul belgelerine bakın.
coverage.processingConcurrency
- Tip:
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ını işlerken kullanılan eşzamanlılık sınırını belirtir.
coverage.customProviderModule
- Tip:
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 yolunu belirtir. Daha fazla bilgi için Rehber - Özel Kapsam Sağlayıcı bölümüne bakın.
testNamePattern*
- Tip
string | RegExp - CLI:
-t <pattern>,--testNamePattern=<pattern>,--test-name-pattern=<pattern>
Tam adları desenle eşleşen testleri çalıştırır. Bu özelliğe OnlyRunThis eklerseniz, test adında OnlyRunThis kelimesini içermeyen testler atlanır.
import { expect, test } from 'vitest';
// çalıştır
test('OnlyRunThis', () => {
expect(true).toBe(true);
});
// atlandı
test('doNotRun', () => {
expect(true).toBe(true);
});open*
- Tip:
boolean - Varsayılan:
!process.env.CI - CLI:
--open,--open=false
Vitest UI'ı açar (WIP).
api
- Tip:
boolean | number - Varsayılan:
false - CLI:
--api,--api.port,--api.host,--api.strictPort
Bağlantı noktasını dinler ve API'yi sunar. true olarak ayarlandığında, varsayılan bağlantı noktası 51204'tür.
browser deneysel
- Varsayılan:
{ enabled: false } - CLI:
--browser=<name>,--browser.name=chrome --browser.headless
Tarayıcı testlerini çalıştırmak için yapılandırma seçenekleri. Lütfen "Tarayıcı Yapılandırma Referansı" makalesine bakınız.
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ü sabitleyiniz.
clearMocks
- Tip:
boolean - Varsayılan:
false
Her testten önce tüm casuslarda .mockClear() çağırır. Bu, taklit uygulamalarını etkilemeden taklit geçmişini temizler.
mockReset
- Tip:
boolean - Varsayılan:
false
Her testten önce tüm casuslarda .mockReset() çağırır. Bu, taklit geçmişini temizler ve her uygulamayı orijinaline sıfırlar.
restoreMocks
- Tip:
boolean - Varsayılan:
false
Her testten önce tüm casuslarda .mockRestore() çağırır. Bu, taklit geçmişini temizler, her uygulamayı orijinaline geri yükler ve casuslanmış nesnelerin orijinal tanımlayıcılarını geri yükler.
unstubEnvs
- Tip:
boolean - Varsayılan:
false
Her testten önce vi.unstubAllEnvs çağırır.
unstubGlobals
- Tip:
boolean - Varsayılan:
false
Her testten önce vi.unstubAllGlobals çağırır.
testTransformMode
- Tip:
{ web?, ssr? }
Glob deseniyle eşleşen bir test içinde içe aktarılan tüm modüller için 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şleyecek ve Node ortamına sahip testler, tüm modülleri ssr: true ile işleyecektir.
testTransformMode.ssr
- Tip:
string[] - Varsayılan:
[]
Belirtilen testler 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ı alır.
testTransformMode.web
- Tip:
string[] - Varsayılan:
[]
Önce normal bir dönüştürme hattı (tarayıcıyı hedefleyen) yapar, 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ı alır.
snapshotFormat*
- Tip:
PrettyFormatOptions
Anlık görüntü testi için biçim seçeneklerini belirtir. Bu seçenekler pretty-format öğesine aktarılır.
TIP
Bu nesnedeki plugins alanının yoksayılacağını unutmayınız.
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ız.
snapshotSerializers*
- Tip:
string[] - Varsayılan:
[]
Anlık görüntü testi için anlık görüntü serileştirici modüllerinin yollarının bir listesi. Özel anlık görüntü serileştiricileri eklemek istiyorsanız faydalıdır. Daha fazla bilgi için Özel Serileştirici bölümüne bakınız.
resolveSnapshotPath*
- Tip:
(testPath: string, snapExtension: string, context: { config: SerializedConfig }) => string - Varsayılan: anlık görüntü dosyalarını
__snapshots__dizininde depolar
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ına depolamak için aşağıdaki gibi yapılandırabilirsiniz:
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
resolveSnapshotPath: (testPath, snapExtension) => testPath + snapExtension,
},
});allowOnly
- Tip:
boolean - Varsayılan:
!process.env.CI - CLI:
--allowOnly,--allowOnly=false
Yalnızca olarak işaretlenmiş testlere ve süitlere izin verir.
dangerouslyIgnoreUnhandledErrors*
- Tip:
boolean - Varsayılan:
false - CLI:
--dangerouslyIgnoreUnhandledErrors--dangerouslyIgnoreUnhandledErrors=false
Meydana gelen işlenmemiş hataları yoksayar.
passWithNoTests*
- Tip:
boolean - Varsayılan:
false - CLI:
--passWithNoTests,--passWithNoTests=false
Test bulunamazsa Vitest başarısız olmaz.
logHeapUsage
- Tip:
boolean - Varsayılan:
false - CLI:
--logHeapUsage,--logHeapUsage=false
Her testten sonra yığın kullanımını gösterir. Bellek sızıntılarını ayıklamak için faydalıdır.
css
- Tip:
boolean | { include?, exclude?, modules? }
CSS'in işlenip işlenmeyeceğini yapılandırır. Hariç tutulduğunda, CSS dosyaları sonraki işlemeyi atlamak için boş dizelerle değiştirilir. CSS Modülleri, çalışma zamanını etkilememek için bir proxy döndürür.
css.include
- Tip:
RegExp | RegExp[] - Varsayılan:
[]
Gerçek CSS döndürmesi ve Vite hattı tarafından işlenmesi gereken dosyalar için RegExp desenini belirtir.
TIP
Tüm CSS dosyalarını işlemek için /.+/ kullanın.
css.exclude
- Tip:
RegExp | RegExp[] - Varsayılan:
[]
Boş bir CSS dosyası döndürecek dosyalar için RegExp desenini belirtir.
css.modules
- Tip:
{ classNameStrategy? } - Varsayılan:
{}
css.modules.classNameStrategy
- Tip:
'stable' | 'scoped' | 'non-scoped' - Varsayılan:
'stable'
CSS dosyalarını işlemeye karar verirseniz, CSS modüllerindeki sınıf adlarının kapsamlı olup olmayacağını yapılandırabilirsiniz. Seçeneklerden birini seçebilirsiniz:
stable: sınıf adları_${name}_${hashedFilename}olarak oluşturulur. Bu, oluşturulan sınıfın CSS içeriği değişirse 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 faydalıdır.scoped: sınıf adları, bir tane varsa ve CSS işleme etkinse,css.modules.generateScopedNameyöntemine saygı duyarak her zamanki gibi oluşturulur. 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ı hashlenmez.
WARNING
Varsayılan olarak, Vitest bir proxy dışa aktarır ve CSS Modülleri işlemeyi bypass eder. Sınıflarınızdaki CSS özelliklerine güveniyorsanız, include seçeneğini kullanarak CSS işlemeyi etkinleştirmeniz gereklidir.
maxConcurrency
- Tip:
number - Varsayılan:
5 - CLI:
--max-concurrency=10,--maxConcurrency=10
test.concurrent ile işaretlenmiş, aynı anda çalışmasına izin verilen test sayısını belirtir.
Bu limitin üzerindeki testler, uygun bir yuva göründüğünde çalıştırılmak üzere sıraya alınır.
cache*
- Tip:
false - CLI:
--no-cache,--cache=false
Önbellek özelliğini devre dışı bırakmak istiyorsanız bu seçeneği kullanınız. Şu anda Vitest, daha uzun ve başarısız testleri önce çalıştırmak için test sonuçları için önbellek tutar.
Önbellek dizini Vite'ın cacheDir seçeneği tarafından kontrol edilir:
import { defineConfig } from 'vitest/config';
export default defineConfig({
cacheDir: 'custom-folder/.vitest',
});Dizini yalnızca Vitest için process.env.VITEST kullanarak sınırlayabilirsiniz:
import { defineConfig } from 'vitest/config';
export default defineConfig({
cacheDir: process.env.VITEST ? 'custom-folder/.vitest' : undefined,
});sequence
- Tip:
{ sequencer?, shuffle?, seed?, hooks?, setupFiles?, groupOrder }
Testlerin nasıl sıralanacağına ilişkin seçenekleri belirtir.
Sıra seçeneklerini CLI'ye nokta notasyonuyla sağlayabilirsiniz:
npx vitest --sequence.shuffle --sequence.seed=1000sequence.sequencer*
- Tip:
TestSequencerConstructor - Varsayılan:
BaseSequencer
Parçalama ve sıralama yöntemlerini tanımlayan özel bir sınıfı belirtir. 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 ve yalnızca --shard seçeneği sağlanırsa yapılır.
sequencer.groupOrder belirtilirse, sıralayıcı her grup ve havuz için bir kez çağrılacaktır.
groupOrder 3.2.0+
- Tip:
number - Varsayılan:
0
Birden çok proje kullanırken bu projenin testlerinin çalışma sırasını kontrol eder.
- Aynı grup sıra numarasına sahip projeler birlikte çalışır ve gruplar en düşükten en yükseğe doğru çalıştırılır.
- Bu seçeneği ayarlamazsanız, tüm projeler paralel olarak çalışır.
- Birkaç proje aynı grup sırasını kullanıyorsa, aynı anda çalışır.
Bu ayar yalnızca projelerin çalışma sırasını etkiler, bir proje içindeki testlerin sırasını etkilemez. Bir proje içindeki test izolasyonunu veya testlerin sırasını kontrol etmek için isolate ve sequence.sequencer seçeneklerini kullanınız.
Örnek
Bu örneği göz önünde bulundurun:
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
projects: [
{
test: {
name: 'slow',
sequence: {
groupOrder: 0,
},
},
},
{
test: {
name: 'fast',
sequence: {
groupOrder: 0,
},
},
},
{
test: {
name: 'flaky',
sequence: {
groupOrder: 1,
},
},
},
],
},
});Bu projelerdeki testler şu sırayla çalışacaktır:
0. slow |
|> birlikte çalışıyor
0. fast |
1. flaky |> yavaş ve hızlıdan sonra tek başına çalışırsequence.shuffle
- Tip:
boolean | { files?, tests? } - Varsayılan:
false - CLI:
--sequence.shuffle,--sequence.shuffle=false
Dosyaların ve 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, böylece uzun süren testler daha erken başlar. Bu, testlerin daha hızlı çalışmasına katkı sağlar. Dosyalarınız ve testleriniz rastgele sırada çalışırsa bu performans iyileştirmesini kaybedersiniz, ancak yanlışlıkla daha önce çalışan başka bir teste bağlı olan testleri izlemek için faydalı olabilir.
sequence.shuffle.files
- Tip:
boolean - Varsayılan:
false - CLI:
--sequence.shuffle.files,--sequence.shuffle.files=false
Dosyaları rastgele sıralayıp sıralamayacağını belirtir. Bu seçeneği etkinleştirirseniz uzun süren testlerin daha erken başlamayacağını unutmayınız.
sequence.shuffle.tests
- Tip:
boolean - Varsayılan:
false - CLI:
--sequence.shuffle.tests,--sequence.shuffle.tests=false
Testleri rastgele sıralayıp sıralamayacağını belirtir.
sequence.concurrent
- Tip:
boolean - Varsayılan:
false - CLI:
--sequence.concurrent,--sequence.concurrent=false
Testlerin paralel çalışmasını istiyorsanız, bu seçenekle veya CLI argümanı --sequence.concurrent ile etkinleştirebilirsiniz.
sequence.seed*
- Tip:
number - Varsayılan:
Date.now() - CLI:
--sequence.seed=1000
Testler rastgele sırada çalışıyorsa rastgeleleştirme tohumunu ayarlar.
sequence.hooks
- Tip:
'stack' | 'list' | 'parallel' - Varsayılan:
'stack' - CLI:
--sequence.hooks=<value>
Kancaların yürütülme sırasını değiştirir.
stack, "sonra" kancalarını ters sırada sıralar, "önce" kancaları tanımlandıkları sırada çalışır.list, tüm kancaları tanımlandıkları sırada sıralar.parallel, tek bir gruptaki kancaları paralel olarak çalıştırır (üst süitlerdeki kancalar yine de mevcut süitin kancalarından önce çalışır).
TIP
Bu seçeneğin onTestFinished üzerinde bir etkisi yoktur. Her zaman ters sırada çağrılır.
sequence.setupFiles
- Tip:
'list' | 'parallel' - Varsayılan:
'parallel' - CLI:
--sequence.setupFiles=<value>
Kurulum dosyalarının yürütülme sırasını değiştirir.
list, kurulum dosyalarını tanımlandıkları sırada çalıştırır.parallel, kurulum dosyalarını paralel olarak çalıştırır.
typecheck
Tür denetimi test ortamını yapılandırmak için seçenekler.
typecheck.enabled
- Tip:
boolean - Varsayılan:
false - CLI:
--typecheck,--typecheck.enabled
Normal testlerinizle birlikte tür denetimini etkinleştirir.
typecheck.only
- Tip:
boolean - Varsayılan:
false - CLI:
--typecheck.only
Tür denetimi etkinleştirildiğinde yalnızca tür denetimi testlerini çalıştırır. CLI kullanırken, bu seçenek otomatik olarak tür denetimini etkinleştirir.
typecheck.checker
- Tip:
'tsc' | 'vue-tsc' | string - Varsayılan:
tsc
Tür denetimi için kullanılacak araçları belirtir. Vitest, türe bağlı olarak daha kolay ayrıştırma için belirli parametrelerle bir işlem başlatır. Denetleyici, tsc ile aynı çıktı biçimini uygulamalıdır.
Tür denetleyiciyi kullanmak için bir paket yüklemeniz gereklidir:
tsciçintypescriptpaketi gerekirvue-tsciçinvue-tscpaketi gerekir
Ayrıca, tsc --noEmit --pretty false ile aynı çıktıyı üreten özel bir ikiliye veya komut adına giden bir yol da geçirebilirsiniz.
typecheck.include
- Tip:
string[] - Varsayılan:
['**/*.{test,spec}-d.?(c|m)[jt]s?(x)']
Test dosyaları olarak ele alınması gereken dosyalar için glob desenini belirtir.
typecheck.exclude
- Tip:
string[] - Varsayılan:
['**/node_modules/**', '**/dist/**', '**/cypress/**', '**/.{idea,git,cache,output,temp}/**']
Test dosyaları olarak ele alınmaması gereken dosyalar için glob desenini belirtir.
typecheck.allowJs
- Tip:
boolean - Varsayılan:
false
@ts-check yorumu olan JS dosyalarını kontrol eder. Tsconfig'de etkinleştirdiyseniz, bu onu geçersiz kılmaz.
typecheck.ignoreSourceErrors
- Tip:
boolean - Varsayılan:
false
Vitest test dosyaları dışında hatalar bulursa başarısız olmaz. Bu, test dışı hataları hiç göstermez.
Varsayılan olarak, Vitest kaynak hatası bulursa, test süitesini başarısız kılar.
typecheck.tsconfig
- Tip:
string - Varsayılan: en yakın tsconfig.json'ı bulmaya çalışır
Proje köküne göre özel tsconfig dosyasının yolu.
typecheck.spawnTimeout
- Tip:
number - Varsayılan:
10_000
Tür denetleyiciyi başlatmak için geçen minimum süre (milisaniye) belirtir.
slowTestThreshold*
- Tip:
number - Varsayılan:
300 - CLI:
--slow-test-threshold=<number>,--slowTestThreshold=<number>
Bir testin veya süitin yavaş kabul edildiği ve sonuçlarda bu şekilde rapor edildiği milisaniye sayısını belirtir.
chaiConfig
- Tip:
{ includeStack?, showDiff?, truncateThreshold? } - Varsayılan:
{ includeStack: false, showDiff: true, truncateThreshold: 40 }
Chai yapılandırmasına eşdeğer seçenekleri belirtir.
chaiConfig.includeStack
- Tip:
boolean - Varsayılan:
false
Onay hata mesajına yığın izinin dahil edilip edilmeyeceğini etkiler. Varsayılan false değeri, hata mesajındaki yığın izini gizler.
chaiConfig.showDiff
- Tip:
boolean - Varsayılan:
true
Atılan AssertionErrors'a showDiff bayrağının dahil edilip edilmeyeceğini etkiler. false her zaman false olur; true, onay bir farkın gösterilmesini istediğinde true olur.
chaiConfig.truncateThreshold
- Tip:
number - Varsayılan:
40
Onay 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. Kırpmayı tamamen devre dışı bırakmak istiyorsanız 0 olarak ayarlayınız.
Bu yapılandırma seçeneği, test.each başlıklarındaki ve onay hata mesajındaki değerlerin kırpılmasını etkiler.
bail
- Tip:
number - Varsayılan:
0 - CLI:
--bail=<value>
Belirtilen sayıda test başarısız olduğunda test yürütmesini durdurur.
Varsayılan olarak Vitest, bazıları başarısız olsa bile tüm test senaryolarınızı çalıştırır. Bu, %100 başarılı derlemelerle ilgilenen ve test hataları meydana geldiğinde test yürütmesini mümkün olduğunca erken durdurmak isteyen CI derlemeleri için uygun olmayabilir. bail seçeneği, hatalar meydana geldiğinde daha fazla testin çalışmasını engellemek için CI çalıştırmalarını hızlandırmak için kullanılabilir.
retry
- Tip:
number - Varsayılan:
0 - CLI:
--retry=<value>
Test başarısız olursa belirli sayıda kez yeniden dener.
onConsoleLog*
- Tip:
(log: string, type: 'stdout' | 'stderr') => boolean | void
Testlerde console.log için özel bir işleyici tanımlar. false döndürürseniz, Vitest günlüğü konsola yazdırmaz.
Üçüncü taraf kütüphanelerden gelen günlükleri filtrelemek için faydalı olabilir.
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
onConsoleLog(log: string, type: 'stdout' | 'stderr'): boolean | void {
return !(log === 'üçüncü taraf kütüphaneden mesaj' && type === 'stdout');
},
},
});onStackTrace*
- Tip:
(error: Error, frame: ParsedStack) => boolean | void
Hataları işlerken her yığın izinin her çerçevesine bir filtreleme fonksiyonu uygular. İlk argüman olan error, standart bir Error ile aynı özelliklere sahip bir nesnedir, ancak gerçek bir örnek değildir.
Üçüncü taraf kütüphanelerden gelen yığın izi çerçevelerini filtrelemek için faydalı olabilir.
import type { ParsedStack } from 'vitest';
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
onStackTrace(error: Error, { file }: ParsedStack): boolean | void {
// Bir ReferenceError ile karşılaştıysak, tüm yığını göster.
if (error.name === 'ReferenceError') {
return;
}
// Üçüncü taraf kütüphanelerden gelen tüm çerçeveleri reddet.
if (file.includes('node_modules')) {
return false;
}
},
},
});diff
- Tip:
string - CLI:
--diff=<path>
DiffOptions nesnesi veya DiffOptions dışa aktaran bir modülün yolu. Fark ekranını özelleştirmek istiyorsanız faydalıdır.
Örneğin, bir yapılandırma nesnesi olarak:
import { defineConfig } from 'vitest/config';
import c from 'picocolors';
export default defineConfig({
test: {
diff: {
aIndicator: c.bold('--'),
bIndicator: c.bold('++'),
omitAnnotationLines: true,
},
},
});Veya bir modül olarak:
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
diff: './vitest.diff.ts',
},
});import type { DiffOptions } from 'vitest';
import c from 'picocolors';
export default {
aIndicator: c.bold('--'),
bIndicator: c.bold('++'),
omitAnnotationLines: true,
} satisfies DiffOptions;diff.expand
- Tip:
boolean - Varsayılan:
true - CLI:
--diff.expand=false
Tüm ortak satırları genişletir.
diff.truncateThreshold
- Tip:
number - Varsayılan:
0 - CLI:
--diff.truncateThreshold=<path>
Görüntülenecek fark sonucunun maksimum uzunluğunu belirtir. Bu eşiğin üzerindeki farklar kesilir. Varsayılan değer 0 ile kesme işlemi gerçekleşmez.
diff.truncateAnnotation
- Tip:
string - Varsayılan:
'... Fark sonucu kesildi' - CLI:
--diff.truncateAnnotation=<annotation>
Fark sonucu kesildiğinde çıktının sonunda gösterilen açıklamayı belirtir.
diff.truncateAnnotationColor
- Tip:
DiffOptionsColor = (arg: string) => string - Varsayılan:
noColor = (string: string): string => string
Kesme açıklamasının rengini belirtir, varsayılan olarak renksiz çıktı verir.
diff.printBasicPrototype
- Tip:
boolean - Varsayılan:
false
Fark çıktısında temel prototip Object ve Array'i yazdırır.
diff.maxDepth
- Tip:
number - Varsayılan:
20(veya farklı türleri karşılaştırırken8)
İç içe nesneleri yazdırırken tekrarlama derinliğini sınırlar.
fakeTimers
- Tip:
FakeTimerInstallOpts
Vitest'in vi.useFakeTimers() kullanırken @sinon/fake-timers öğesine ileteceği seçenekleri belirtir.
fakeTimers.now
- Tip:
number | Date - Varsayılan:
Date.now()
Belirtilen Unix zaman damgası ile sahte zamanlayıcıları başlatır.
fakeTimers.toFake
- Tip:
('setTimeout' | 'clearTimeout' | 'setImmediate' | 'clearImmediate' | 'setInterval' | 'clearInterval' | 'Date' | 'nextTick' | 'hrtime' | 'requestAnimationFrame' | 'cancelAnimationFrame' | 'requestIdleCallback' | 'cancelIdleCallback' | 'performance' | 'queueMicrotask')[] - Varsayılan:
nextTickvequeueMicrotaskhariç global olarak mevcut her şey
Taklit edilecek genel yöntemlerin ve API'lerin adlarını içeren bir diziyi belirtir.
Yalnızca setTimeout() ve nextTick()'i taklit etmek için bu özellik ['setTimeout', 'nextTick'] olarak belirtilir.
--pool=forks kullanarak Vitest'i node:child_process içinde çalıştırırken nextTick'i taklit etmek desteklenmemektedir. NodeJS, node:child_process içinde dahili olarak process.nextTick kullanır ve taklit edildiğinde takılır. nextTick'i taklit etmek, Vitest'i --pool=threads ile çalıştırırken desteklenmektedir.
fakeTimers.loopLimit
- Tip:
number - Varsayılan:
10_000
vi.runAllTimers() çağrıldığında çalıştırılacak maksimum zamanlayıcı sayısını belirtir.
fakeTimers.shouldAdvanceTime
- Tip:
boolean - Varsayılan:
false
@sinonjs/fake-timers'a, gerçek sistem zamanı kaymasına göre taklit edilen zamanı otomatik olarak artırmasını sağlar (örn. gerçek sistem zamanındaki her 20ms değişiklik için taklit edilen zaman 20ms artırılır).
fakeTimers.advanceTimeDelta
- Tip:
number - Varsayılan:
20
Yalnızca shouldAdvanceTime: true ile kullanıldığında geçerlidir. Gerçek sistem zamanındaki her advanceTimeDelta ms değişiklik için taklit edilen zamanı advanceTimeDelta ms artırır.
fakeTimers.shouldClearNativeTimers
- Tip:
boolean - Varsayılan:
true
Sahte zamanlayıcılara, "yerel" (yani sahte olmayan) zamanlayıcıları ilgili işleyicilerine devrederek temizlemelerini sağlar. Devre dışı bırakıldığında, sahte zamanlayıcı oturumu başlamadan önce zamanlayıcılar mevcutsa potansiyel olarak beklenmedik davranışlara yol açabilir.
workspace*
KULLANIMDAN KALDIRILDI
Bu seçenek kullanımdan kaldırıldı ve bir sonraki ana sürümde kaldırılır. Lütfen bunun yerine projects kullanınız.
- Tip:
string | TestProjectConfiguration[] - CLI:
--workspace=./file.js - Varsayılan: Yapılandırma dosyasına veya köke yakın
vitest.{workspace,projects}.{js,ts,json}dosyasını belirtir.
Kök dizinine göre bir çalışma alanı yapılandırma dosyasının yolunu belirtir.
Vitest 3'ten itibaren, çalışma alanı dizisini kök yapılandırmasında da tanımlayabilirsiniz. Çalışma alanı yapılandırmada manuel olarak tanımlanırsa, Vitest kökteki vitest.workspace dosyasını yoksayar.
projects*
- Tip:
TestProjectConfiguration[] - Varsayılan:
[]
Bir projeler dizisini belirtir.
isolate
- Tip:
boolean - Varsayılan:
true - CLI:
--no-isolate,--isolate=false
Testleri izole bir ortamda çalıştırır. Bu seçeneğin vmThreads ve vmForks havuzları üzerinde bir etkisi yoktur.
Bu seçeneği devre dışı bırakmak, kodunuz yan etkilere dayanmıyorsa (genellikle node ortamına sahip projeler için geçerlidir) performansı iyileştirebilir.
TIP
poolOptions özelliğini kullanarak belirli havuzlar için izolasyonu devre dışı bırakabilirsiniz.
includeTaskLocation
- Tip:
boolean - Varsayılan:
false
Vitest API'si raporlayıcılarda görevleri aldığında location özelliği dahil edilmeli midir? Çok sayıda testiniz varsa, bu küçük bir performans düşüşüne yol açabilir.
location özelliği, orijinal dosyadaki test veya describe konumuna karşılık gelen column ve line değerlerine sahiptir.
Bu seçenek, açıkça devre dışı bırakmazsanız ve Vitest'i şunlarla çalıştırıyorsanız otomatik olarak etkinleştirilir:
- Vitest UI
- veya başsız mod olmadan Tarayıcı Modu kullanıyorsanız
- veya HTML Raporlayıcı kullanıyorsanız
TIP
Bu seçeneğin, buna dayanan özel kod kullanmıyorsanız hiçbir etkisi yoktur.
snapshotEnvironment
- Tip:
string
Özel bir anlık görüntü ortamı uygulamasının yolunu belirtir. Bu, testlerinizi Node.js API'lerini desteklemeyen bir ortamda çalıştırıyorsanız faydalıdır. Bu seçeneğin, tarayıcı çalıştırıcısı üzerinde bir etkisi yoktur.
Bu nesne SnapshotEnvironment şeklinde olmalı ve anlık görüntü dosyalarını çözümlemek ve okumak/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 kısmını geçersiz kılmanız gerekiyorsa, varsayılan VitestSnapshotEnvironment'ı vitest/snapshot giriş noktasından 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ılması önerilir.
Yalnızca anlık görüntüler özelliğini yapılandırmanız gerekiyorsa, snapshotFormat veya resolveSnapshotPath seçeneklerini kullanınız.
env
- Tip:
Partial<NodeJS.ProcessEnv>
Testler sırasında process.env ve import.meta.env üzerinde kullanılabilen ortam değişkenlerini belirtir. Bu değişkenler ana süreçte (örneğin globalSetup'ta) kullanılamaz.
expect
- Tip:
ExpectOptions
expect.requireAssertions
- Tip:
boolean - Varsayılan:
false
Her testin başında expect.hasAssertions() çağrılmasıyla aynı işlevi görür. Bu, hiçbir testin yanlışlıkla geçmemesini sağlar.
TIP
Bu yalnızca Vitest'in expect'i ile çalışır. Eğer assert veya .should onaylarını kullanırsanız, bunlar sayılmaz ve testiniz beklenen onayların eksikliği nedeniyle başarısız olur.
Bunun değerini vi.setConfig({ expect: { requireAssertions: false } }) çağırarak değiştirebilirsiniz. Yapılandırma, vi.resetConfig manuel olarak çağrılana kadar sonraki her expect çağrısına uygulanır.
expect.poll
expect.poll için genel yapılandırma seçeneklerini belirtir. Bunlar, expect.poll(condition, options) öğesine iletebileceğiniz seçeneklerle aynıdır.
expect.poll.interval
- Tip:
number - Varsayılan:
50
Milisaniye cinsinden yoklama aralığını belirtir.
expect.poll.timeout
- Tip:
number - Varsayılan:
1000
Milisaniye cinsinden yoklama zaman aşımı süresini belirtir.
printConsoleTrace
- Tip:
boolean - Varsayılan:
false
Herhangi bir console yöntemi çağrıldığında konsol izlerini her zaman yazdırır. Bu, hata ayıklama için faydalıdır.
attachmentsDir 3.2.0+
- Tip:
string - Varsayılan:
'.vitest-attachments'
context.annotate tarafından oluşturulan ekleri depolamak için dizin yolunu belirtir, proje köküne göre.