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 test
yarn test
pnpm run test
bun run test
Yalnızca tek bir proje içinde testleri çalıştırmanız gerekiyorsa, --project
CLI seçeneğini kullanın:
npm run test --project e2e
yarn test --project e2e
pnpm run test --project e2e
bun run test --project e2e
TIP
CLI seçeneği --project
birden fazla projeyi filtrelemek için birden fazla kez kullanılabilir:
npm run test --project e2e --project unit
yarn test --project e2e --project unit
pnpm run test --project e2e --project unit
bun run test --project e2e --project unit
Yapı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.