Başlarken
Genel Bakış
Vitest ("vi-test" olarak telaffuz edilir), Vite tarafından desteklenen yeni nesil bir test çerçevesidir.
Projenin arkasındaki mantık hakkında daha fazla bilgiyi Neden Vitest bölümünde bulabilirsiniz.
Vitest'i Çevrimiçi Deneyin
Vitest'i StackBlitz üzerinden çevrimiçi deneyebilirsiniz. Vitest'i doğrudan tarayıcıda çalıştırır ve yerel kurulumla neredeyse aynı işlevselliği sunar; ancak makinenize herhangi bir şey yüklemenizi gerektirmez.
Projenize Vitest Ekleme
Video ile nasıl kurulacağını öğreninnpm install -D vitestyarn add -D vitestpnpm add -D vitestbun add -D vitestTIP
Vitest, Vite >=v5.0.0 ve Node >=v18.0.0 gerektirir.
Yukarıda listelenen yöntemlerden birini kullanarak vitest'i package.json dosyanıza bir geliştirme bağımlılığı olarak eklemeniz önerilir. Ancak, vitest'i doğrudan çalıştırmayı tercih ederseniz, npx vitest kullanabilirsiniz (npx aracı npm ve Node.js ile birlikte gelir).
npx aracı belirtilen komutu çalıştırır. Varsayılan olarak, npx önce komutun yerel projenin ikili dosyalarında bulunup bulunmadığını kontrol eder. Orada bulunamazsa, npx sistemin $PATH'ine bakar ve bulunursa çalıştırır. Komut her iki konumda da bulunamazsa, npx çalıştırmadan önce geçici bir konuma yükler.
Test Yazımı
Örnek olarak, iki sayıyı toplayan bir fonksiyonun çıktısını doğrulayan basit bir test yazacağız.
export function sum(a, b) {
return a + b;
}import { expect, test } from 'vitest';
import { sum } from './sum.js';
test('adds 1 + 2 to equal 3', () => {
expect(sum(1, 2)).toBe(3);
});TIP
Varsayılan olarak, test dosyaları adlarında .test. veya .spec. içermelidir.
Ardından, testi çalıştırmak için package.json dosyanıza aşağıdaki bölümü ekleyin:
{
"scripts": {
"test": "vitest"
}
}Son olarak, paket yöneticinize bağlı olarak npm run test, yarn test veya pnpm test komutunu çalıştırın; Vitest aşağıdaki mesajı yazdıracaktır:
✓ sum.test.js (1)
✓ adds 1 + 2 to equal 3
Test Files 1 passed (1)
Tests 1 passed (1)
Start at 02:15:44
Duration 311msWARNING
Paket yöneticiniz olarak Bun kullanıyorsanız, bun test komutu yerine bun run test komutunu kullandığınızdan emin olun, aksi takdirde Bun kendi test çalıştırıcısını çalıştıracaktır.
Vitest kullanımı hakkında daha fazla bilgi için API bölümüne bakın.
Vitest Yapılandırması
Vitest'in ana avantajlarından biri, Vite ile birleşik bir yapılandırmaya sahip olmasıdır. Kök vite.config.ts dosyanız mevcutsa, Vitest onu okuyarak Vite uygulamanızdaki eklentileri ve kurulumu kullanacaktır. Örneğin, Vite resolve.alias ve plugins yapılandırmanız doğrudan çalışacaktır. Test sırasında farklı bir yapılandırma istiyorsanız şunları yapabilirsiniz:
- Daha yüksek önceliğe sahip olacak
vitest.config.tsoluşturun. - CLI'ye
--configseçeneğini kullanın, örn.vitest --config ./path/to/vitest.config.ts. vite.config.tsiçinde farklı yapılandırmaları koşullu olarak uygulamak içindefineConfigüzerindeprocess.env.VITESTveyamodeözelliğini kullanın (geçersiz kılınmazsatestolarak ayarlanacaktır).
Vitest, yapılandırma dosyaları için Vite ile aynı uzantıları (.js, .mjs, .cjs, .ts, .cts, .mts) destekler. Ancak .json uzantısını desteklemez.
Vite'ı derleme aracı olarak kullanmıyorsanız, Vitest'i yapılandırma dosyanızdaki test özelliğini kullanarak yapılandırabilirsiniz:
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
// ...
},
});TIP
Vite'ı kendiniz kullanmasanız bile, Vitest dönüşüm süreçleri için büyük ölçüde ona bağımlıdır. Bu yüzden, Vite belgelerinde açıklanan herhangi bir özelliği de yapılandırabilirsiniz.
Zaten Vite kullanıyorsanız, Vite yapılandırmanıza test özelliğini ekleyin. Ayrıca, yapılandırma dosyanızın en üstüne üç eğik çizgi yönergesi ile Vitest türlerine bir referans eklemeniz gerekecektir.
/// <reference types="vitest" />
import { defineConfig } from 'vite';
export default defineConfig({
test: {
// ...
},
});<reference types="vitest" /> bir sonraki ana güncellemede kullanımdan kalkacak, ancak Vitest 2.1'den itibaren vitest/config'e geçiş yapmaya başlayabilirsiniz:
/// <reference types="vitest/config" />
import { defineConfig } from 'vite';
export default defineConfig({
test: {
// ... Seçenekleri buraya belirtin.
},
});Yapılandırma seçeneklerinin listesi için Yapılandırma Referansı bölümüne bakın.
WARNING
Vite ve Vitest için iki ayrı yapılandırma dosyası kullanmaya karar verirseniz, Vitest yapılandırma dosyanızda aynı Vite seçeneklerini tanımladığınızdan emin olun. Çünkü bu dosya Vite dosyanızı genişletmeyecek, aksine geçersiz kılacaktır. Ayrıca, Vite yapılandırmasını Vitest yapılandırmasıyla birleştirmek için vite veya vitest/config modüllerinden mergeConfig yöntemini kullanabilirsiniz:
import { defineConfig, mergeConfig } from 'vitest/config';
import viteConfig from './vite.config.mjs';
export default mergeConfig(
viteConfig,
defineConfig({
test: {
// ...
},
})
);import { defineConfig } from 'vite';
import Vue from '@vitejs/plugin-vue';
export default defineConfig({
plugins: [Vue()],
});Ancak, iki ayrı dosya oluşturmak yerine hem Vite hem de Vitest için aynı dosyayı kullanmanızı öneririz.
Projeler Desteği
Aynı proje içinde farklı proje yapılandırmalarını Test Projeleri ile yönetin. Projelerinizi tanımlayan dosya ve klasör listesini vitest.config dosyasında belirtebilirsiniz.
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
projects: [
// Projelerinizi tanımlamak için glob desenleri listesi kullanabilirsiniz.
// Vitest, bir yapılandırma dosyaları listesi veya yapılandırma dosyalarının bulunduğu dizinler bekler.
'packages/*',
'tests/*/vitest.config.{e2e,unit}.ts',
// Aynı testleri bile, aynı "vitest" süreci içinde farklı yapılandırmalarla çalıştırabilirsiniz.
{
test: {
name: 'happy-dom',
root: './shared_tests',
environment: 'happy-dom',
setupFiles: ['./setup.happy-dom.ts'],
},
},
{
test: {
name: 'node',
root: './shared_tests',
environment: 'node',
setupFiles: ['./setup.node.ts'],
},
},
],
},
});Komut Satırı Arayüzü (CLI)
Vitest'in yüklü olduğu bir projede, npm betiklerinizde vitest ikili dosyasını kullanabilir veya doğrudan npx vitest ile çalıştırabilirsiniz. İşte yeni oluşturulmuş bir Vitest projesindeki varsayılan npm betikleri:
{
"scripts": {
"test": "vitest",
"coverage": "vitest run --coverage"
}
}Dosya değişikliklerini izlemeden testleri tek seferlik çalıştırmak için vitest run komutunu kullanın. --port veya --https gibi ek CLI seçenekleri belirtebilirsiniz. Tüm CLI seçeneklerini görmek için projenizde npx vitest --help komutunu çalıştırın.
Komut Satırı Arayüzü hakkında daha fazla bilgi edinin.
Bağımlılıkların Otomatik Kurulumu
Vitest, belirli bağımlılıklar yüklü değilse bunları yüklemenizi önerecektir. Bu davranışı VITEST_SKIP_INSTALL_CHECKS=1 ortam değişkenini ayarlayarak kapatabilirsiniz.
IDE Entegrasyonları
Vitest ile test deneyiminizi geliştirmek için Visual Studio Code için resmi bir uzantı da sunuyoruz.
IDE Entegrasyonları hakkında daha fazla bilgi edinin.
Örnekler
| Örnek | Kaynak | Deneme Ortamı |
|---|---|---|
basic | GitHub | Çevrimiçi Oyna |
fastify | GitHub | Çevrimiçi Oyna |
in-source-test | GitHub | Çevrimiçi Oyna |
lit | GitHub | Çevrimiçi Oyna |
vue | GitHub | Çevrimiçi Oyna |
marko | GitHub | Çevrimiçi Oyna |
preact | GitHub | Çevrimiçi Oyna |
react | GitHub | Çevrimiçi Oyna |
solid | GitHub | Çevrimiçi Oyna |
svelte | GitHub | Çevrimiçi Oyna |
sveltekit | GitHub | Çevrimiçi Oyna |
profiling | GitHub | Yok |
typecheck | GitHub | Çevrimiçi Oyna |
projects | GitHub | Çevrimiçi Oyna |
Vitest Kullanan Projeler
- unocss
- unplugin-auto-import
- unplugin-vue-components
- vue
- vite
- vitesse
- vitesse-lite
- fluent-vue
- vueuse
- milkdown
- gridjs-svelte
- spring-easing
- bytemd
- faker
- million
- Vitamin
- neodrag
- svelte-multiselect
- iconify
- tdesign-vue-next
- cz-git
Yayınlanmamış Commit'leri Kullanma
Ana daldaki her commit ve 'cr-tracked' etiketli PR'lar pkg.pr.new adresinde yayınlanmaktadır. npm i https://pkg.pr.new/vitest@{commit} komutuyla yükleyebilirsiniz.
Kendi değişikliklerinizi yerel olarak test etmek isterseniz, kendiniz derleyip bağlayabilirsiniz (pnpm gereklidir):
git clone https://github.com/vitest-dev/vitest.git
cd vitest
pnpm install
cd packages/vitest
pnpm run build
pnpm link --global # bu adımda tercih ettiğiniz paket yöneticisini kullanabilirsinizArdından Vitest kullandığınız projeye gidin ve pnpm link --global vitest (veya Vitest'i global olarak bağladığınız paket yöneticisi) komutunu çalıştırın.
Topluluk
Sorularınız varsa veya yardıma ihtiyacınız olursa, Discord ve GitHub Tartışmaları üzerinden toplulukla iletişime geçin.