Test Projeleri
Örnek Proje
WARNING
Bu özellik daha önce workspace olarak biliniyordu. workspace 3.2 sürümünden itibaren kullanımdan kaldırılmış ve projects yapılandırmasıyla değiştirilmiştir. İşlevsel olarak aynıdırlar.
Vitest, tek bir Vitest süreci içinde birden fazla proje yapılandırması tanımlama imkanı sunar. Bu özellik özellikle monorepo yapıları için kullanışlıdır; ayrıca resolve.alias, plugins veya test.browser gibi farklı yapılandırmalarla testleri çalıştırmak için de kullanılabilir.
Projeleri Tanımlama
Projeleri ana yapılandırmanızda tanımlayabilirsiniz:
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
projects: ['packages/*'],
},
});Proje yapılandırmaları, projelerinize referans veren yerleşik yapılandırmalar, dosyalar veya glob kalıplarıdır. Örneğin, projelerinizi içeren packages adında bir klasörünüz varsa, ana Vitest yapılandırmanızda bir dizi tanımlayabilirsiniz:
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
projects: ['packages/*'],
},
});Vitest, packages içindeki her klasörü, içinde bir yapılandırma dosyası olmasa bile ayrı bir proje olarak ele alacaktır. Bu glob kalıbı herhangi bir dosyayla eşleşirse, adında vitest olmasa veya alışılmadık bir dosya uzantısına sahip olsa bile bir Vitest yapılandırması olarak kabul edilecektir.
WARNING
Vitest, ana vitest.config dosyasını, yapılandırmada açıkça belirtilmediği sürece bir proje olarak kabul etmez. Sonuç olarak, ana yapılandırma yalnızca reporters ve coverage gibi genel seçenekleri etkileyecektir. Vitest'in ana yapılandırma dosyasında belirtilen apply, config, configResolved veya configureServer gibi belirli eklenti kancalarını her zaman çalıştıracağını unutmayın. Vitest ayrıca genel kurulumları ve özel kapsama sağlayıcısını çalıştırmak için aynı eklentileri kullanır.
Projeleri yapılandırma dosyalarıyla da tanımlayabilirsiniz:
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
projects: ['packages/*/vitest.config.{e2e,unit}.ts'],
},
});Bu kalıp yalnızca uzantıdan önce e2e veya unit içeren vitest.config dosyasına sahip projeleri kapsar.
Projeleri satır içi yapılandırma kullanarak da tanımlayabilirsiniz. Yapılandırma her iki sözdizimini de aynı anda destekler.
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
projects: [
// `packages` klasöründeki her klasör ve dosyayla eşleşir
'packages/*',
{
// kök yapılandırmadan seçenekleri devralmak için "extends: true" ekleyin
extends: true,
test: {
include: ['tests/**/*.{browser}.test.{ts,js}'],
// satır içi yapılandırmalar kullanırken bir ad belirtmeniz önerilir
name: 'happy-dom',
environment: 'happy-dom',
},
},
{
test: {
include: ['tests/**/*.{node}.test.{ts,js}'],
// ad etiketinin rengi değiştirilebilir
name: { label: 'node', color: 'green' },
environment: 'node',
},
},
],
},
});WARNING
Tüm projelerin benzersiz adları olmalıdır; aksi takdirde Vitest hata verecektir. Satır içi yapılandırmada bir ad sağlanmazsa, Vitest otomatik olarak bir sayı atayacaktır. Glob sözdizimiyle tanımlanan proje yapılandırmaları için Vitest, varsayılan olarak en yakın package.json dosyasındaki "name" özelliğini veya eğer yoksa klasör adını kullanacaktır.
Projeler bazı yapılandırma özelliklerini desteklemez. Daha iyi tip güvenliği için, proje yapılandırma dosyalarında defineConfig yerine defineProject yöntemini kullanın:
// @errors: 2769
import { defineProject } from 'vitest/config';
export default defineProject({
test: {
environment: 'jsdom',
// "reporters" bir proje yapılandırmasında desteklenmez,
// bu yüzden bir hata gösterecektir
reporters: ['json'],
},
});Testleri Çalıştırma
Testleri çalıştırmak için ana package.json dosyanızda bir komut dosyası tanımlayın:
{
"scripts": {
"test": "vitest"
}
}Şimdi testler paket yöneticiniz kullanılarak çalıştırılabilir:
npm run testyarn testpnpm run testbun run testYalnızca tek bir proje içinde testleri çalıştırmanız gerekiyorsa, --project CLI seçeneğini kullanın:
npm run test --project e2eyarn test --project e2epnpm run test --project e2ebun run test --project e2eTIP
CLI seçeneği --project birden fazla projeyi filtrelemek için birden fazla kez kullanılabilir:
npm run test --project e2e --project unityarn test --project e2e --project unitpnpm run test --project e2e --project unitbun run test --project e2e --project unitYapılandırma
Yapılandırma seçeneklerinin hiçbiri ana yapılandırma dosyasından otomatik olarak devralınmaz. Paylaşılan bir yapılandırma dosyası oluşturabilir ve bunu proje yapılandırmasıyla kendiniz birleştirebilirsiniz:
import { defineProject, mergeConfig } from 'vitest/config';
import configShared from '../vitest.shared.js';
export default mergeConfig(
configShared,
defineProject({
test: {
environment: 'jsdom',
},
})
);Ek olarak, ana yapılandırmanızdan devralmak için extends seçeneğini kullanabilirsiniz. Tüm seçenekler birleştirilecektir.
import { defineConfig } from 'vitest/config';
import react from '@vitejs/plugin-react';
export default defineConfig({
plugins: [react()],
test: {
pool: 'threads',
projects: [
{
// eklentiler ve havuz gibi bu yapılandırmadan seçenekleri devralacaktır
extends: true,
test: {
name: 'unit',
include: ['**/*.unit.test.ts'],
},
},
{
// bu yapılandırmadan hiçbir seçeneği devralmayacaktır
// bu varsayılan davranıştır
extends: false,
test: {
name: 'integration',
include: ['**/*.integration.test.ts'],
},
},
],
},
});Desteklenmeyen Seçenekler
Bazı yapılandırma seçeneklerine bir proje yapılandırmasında izin verilmez. En önemlileri:
coverage: kod kapsamı tüm süreç için yapılırreporters: yalnızca ana düzeydeki raporlayıcılar desteklenebilirresolveSnapshotPath: yalnızca ana düzeydeki çözümleyici dikkate alınır- test çalıştırıcılarını etkilemeyen diğer tüm seçenekler
Bir proje yapılandırması içinde desteklenmeyen tüm yapılandırma seçenekleri, "Yapılandırma" kılavuzunda * işaretiyle işaretlenmiştir. Bunlar ana yapılandırma dosyasında bir kez tanımlanmalıdır.