Gelişmiş API
WARNING
Bu kılavuz, Node.js betikleri aracılığıyla testleri çalıştırmak için gelişmiş API'leri listeler. Yalnızca testleri çalıştırmak istiyorsanız, muhtemelen buna ihtiyacınız yoktur. Öncelikli olarak kütüphane yazarları tarafından kullanılır.
vitest/node giriş noktasından herhangi bir yöntemi içe aktarabilirsiniz.
startVitest
function startVitest(
mode: VitestRunMode,
cliFilters: string[] = [],
options: CliOptions = {},
viteOverrides?: ViteUserConfig,
vitestOptions?: VitestOptions
): Promise<Vitest>;Vitest testlerini Node API'si ile çalıştırmaya başlayabilirsiniz:
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.
İzleme modu etkin değilse, Vitest close yöntemini otomatik olarak çağırır.
İzleme modu etkinse ve terminal TTY'yi destekliyorsa, Vitest konsol kısayollarını kaydeder.
İkinci argüman olarak bir filtre listesi verebilirsiniz. Vitest, dosya yolunda iletilen dizelerden en az birini içeren testleri çalıştırır.
Ek olarak, üçüncü argümanı CLI argümanlarını geçmek için kullanabilirsiniz; bu, herhangi bir test yapılandırma seçeneğini geçersiz kılar. Alternatif olarak, dördüncü argüman olarak tam Vite yapılandırmasını geçirebilirsiniz; bu, diğer kullanıcı tanımlı seçeneklerden öncelikli olur.
Testleri çalıştırdıktan sonra, sonuçları state.getTestModules API'sinden alabilirsiniz:
import type { TestModule } from 'vitest/node';
const vitest = await startVitest('test');
console.log(vitest.state.getTestModules()); // [TestModule]TIP
"Testleri Çalıştırma" kılavuzunda bir kullanım örneği bulunmaktadır.
createVitest
function createVitest(
mode: VitestRunMode,
options: CliOptions,
viteOverrides: ViteUserConfig = {},
vitestOptions: VitestOptions = {}
): Promise<Vitest>;createVitest fonksiyonunu kullanarak bir Vitest örneği 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,
});TIP
"Testleri Çalıştırma" kılavuzunda bir kullanım örneği bulunmaktadır.
resolveConfig
function resolveConfig(
options: UserConfig = {},
viteOverrides: ViteUserConfig = {}
): Promise<{
vitestConfig: ResolvedConfig;
viteConfig: ResolvedViteConfig;
}>;Bu yöntem, yapılandırmayı özel parametrelerle çözümler. Parametre verilmediğinde, root değeri process.cwd() olur.
import { resolveConfig } from 'vitest/node';
// vitestConfig yalnızca çözümlenmiş "test" özelliklerini içerir
const { vitestConfig, viteConfig } = await resolveConfig({
mode: 'custom',
configFile: false,
resolve: {
conditions: ['custom'],
},
test: {
setupFiles: ['/my-setup-file.js'],
pool: 'threads',
},
});INFO
Vite'ın createServer'ının çalışma şekli nedeniyle, Vitest yapılandırmayı eklentinin configResolve kancası sırasında çözümlemek zorundadır. Bu nedenle, bu yöntem dahili olarak kullanılmaz; yalnızca genel bir API olarak sunulmaktadır.
Yapılandırmayı startVitest veya createVitest API'lerine geçirirseniz, Vitest yapılandırmayı tekrar çözer.
WARNING
resolveConfig projeleri çözümlemez. Proje yapılandırmalarını çözümlemek için Vitest'in kurulmuş bir Vite sunucusuna ihtiyacı vardır.
Ayrıca viteConfig.test'in tam olarak çözümlenmeyeceğini unutmayın. Vitest yapılandırmasına ihtiyacınız varsa, bunun yerine vitestConfig'i kullanın.
parseCLI
function parseCLI(
argv: string | string[],
config: CliParseOptions = {}
): {
filter: string[];
options: CliOptions;
};Bu yöntemi CLI argümanlarını ayrıştırmak amacıyla kullanabilirsiniz. Bir dize (argümanların tek bir boşlukla ayrıldığı) veya Vitest CLI'nin kullandığı aynı biçimde bir dizeler dizisi kabul eder. Sonrasında createVitest veya startVitest yöntemlerine geçirebileceğiniz bir filtre ve options döndürür.
import { parseCLI } from 'vitest/node';
const result = parseCLI('vitest ./files.ts --coverage --browser=chrome');
result.options;
// {
// coverage: { enabled: true },
// browser: { name: 'chrome', enabled: true }
// }
result.filter;
// ['./files.ts']