Node API
WARNING
Vitest, deneysel özel API'ler sunar. Kırıcı değişiklikler SemVer kurallarını takip etmeyebilir, bu nedenle kullanırken lütfen Vitest sürümünü sabitleyin.
startVitest
Vitest testlerini Node API'sini kullanarak başlatabilirsiniz:
import { startVitest } from 'vitest/node';
const vitest = await startVitest('test');
await vitest?.close();
startVitest
fonksiyonu, testler başlatılabiliyorsa bir Vitest
örneği döndürür. Aşağıdaki durumlardan herhangi birinin gerçekleşmesi halinde undefined
döndürür:
- Vitest,
vite
paketini bulamadı (genellikle Vitest ile birlikte yüklenir). - Eğer kapsam (coverage) etkinleştirilmişse ve çalıştırma modu "test" ise, ancak kapsam paketi yüklenmemişse (
@vitest/coverage-v8
veya@vitest/coverage-istanbul
). - Eğer ortam paketi yüklenmemişse (
jsdom
/happy-dom
/@edge-runtime/vm
).
Eğer undefined
döndürülürse veya çalıştırma sırasında testler başarısız olursa, Vitest process.exitCode
değerini 1
olarak ayarlar.
İzleme modu etkin değilse, Vitest close
metodunu çağırır.
İzleme modu etkinse ve terminal TTY desteği sunuyorsa, Vitest konsol kısayollarını etkinleştirir.
İkinci argüman olarak bir filtre listesi iletebilirsiniz. Vitest, yalnızca dosya yolunda bu listedeki dizelerden en az birini içeren testleri çalıştıracaktır.
Ayrıca, üçüncü argümanı kullanarak CLI argümanlarını iletebilirsiniz. Bu argümanlar, mevcut test yapılandırma seçeneklerini geçersiz kılacaktır.
Ya da, dördüncü argüman olarak tam bir Vite yapılandırması iletebilirsiniz. Bu yapılandırma, kullanıcı tarafından tanımlanan diğer tüm seçeneklere göre öncelikli olacaktır.
Testler çalıştırıldıktan sonra, sonuçları state.getFiles
API'sinden alabilirsiniz:
const vitest = await startVitest('test');
console.log(vitest.state.getFiles()); // [{ type: 'file', ... }]
Vitest 2.1 itibariyle, state.getFiles
ile birlikte "Raporlanan Görevler" API'sinin kullanılması önerilir. Gelecekte, Vitest bu nesneleri doğrudan döndürecektir:
const vitest = await startVitest('test');
const [fileTask] = vitest.state.getFiles();
const testFile = vitest.state.getReportedEntity(fileTask);
createVitest
createVitest
fonksiyonunu kullanarak Vitest örneğini kendiniz oluşturabilirsiniz. startVitest
ile aynı Vitest
örneğini döndürür, ancak testleri başlatmaz ve yüklü paketleri doğrulamaz.
import { createVitest } from 'vitest/node';
const vitest = await createVitest('test', {
watch: false,
});
parseCLI
CLI argümanlarını ayrıştırmak için bu metodu kullanabilirsiniz. Metot, tek boşluklarla ayrılmış argümanlar içeren bir dize veya Vitest CLI'nın kullandığı biçimde bir dize dizisi kabul eder. Bu metot, daha sonra createVitest
veya startVitest
metotlarına iletebileceğiniz bir filtre ve options
nesnesi döndürür.
import { parseCLI } from 'vitest/node';
parseCLI('vitest ./files.ts --coverage --browser=chrome');
Vitest
Vitest örneği, mevcut test modunu gerektirir. Bunlar şunlar olabilir:
- Çalışma zamanı testleri çalıştırılırken
test
- Kıyaslama (benchmark) çalıştırılırken
benchmark
mode
test
Test modu sadece test
veya it
içindeki fonksiyonları çağırır ve bench
bulunduğunda bir hata verir. Bu mod, test dosyalarını bulmak için yapılandırmadaki include
ve exclude
seçeneklerini kullanır.
benchmark
Kıyaslama modu sadece bench
fonksiyonlarını çalıştırır ve test
veya it
bulunduğunda bir hata verir. Bu mod, kıyaslama dosyalarını bulmak için yapılandırmadaki benchmark.include
ve benchmark.exclude
seçeneklerini kullanır.
start
Test dosyalarını filtrelemek için dize dizilerinden oluşan bir liste iletebilirsiniz.
provide
Vitest, vitest.getCoreWorkspaceProject().provide
metoduna kısayol olarak provide
metodunu sunar. Bu metot sayesinde, ana iş parçacığından (main thread) testlere değerler aktarabilirsiniz. Tüm değerler depolanmadan önce structuredClone
kullanılarak kontrol edilir; ancak değerlerin kendileri kopyalanmaz.
Testlerde değerleri almak için, vitest
giriş noktasından inject
metodunu içe aktarmanız gerekir:
import { inject } from 'vitest';
const port = inject('wsPort'); // 3000
Daha iyi tip güvenliği için, ProvidedContext
tipini genişletmenizi öneririz:
import { createVitest } from 'vitest/node';
const vitest = await createVitest('test', {
watch: false,
});
vitest.provide('wsPort', 3000);
declare module 'vitest' {
export interface ProvidedContext {
wsPort: number;
}
}
WARNING
provide
, teknik olarak WorkspaceProject
'in bir metodudur, bu nedenle belirli bir projeyle sınırlıdır. Ancak, tüm projeler çekirdek projeden değerleri miras alır, bu da vitest.provide
metodunu testlere değer iletmek için evrensel bir yöntem haline getirir.
TIP
Bu metot, public API'yi kullanmak istemediğiniz durumlarda global kurulum dosyalarında da kullanılabilir:
export default function setup({ provide }) {
provide('wsPort', 3000);
}