Kaynak İçi Test
Vitest, Rust'ın modül testlerine benzer şekilde, testleri kaynak kodunuzun içinde, uygulamanızın yanında çalıştırmanıza olanak tanır.
Bu yaklaşım, testlerin uygulamayla aynı kapsamı paylaşmasını ve özel durumları dışa aktarmadan test edebilmesini sağlar. Aynı zamanda, geliştirme sürecinde daha hızlı geri bildirim almanızı sağlar.
Kurulum
Başlamak için, kaynak dosyanızın sonuna bir if (import.meta.vitest)
bloğu ekleyin ve içine birkaç test yazın. Örneğin:
// src/index.ts
// uygulama
export function add(...args: number[]) {
return args.reduce((a, b) => a + b, 0);
}
// kaynak içi test kümeleri
if (import.meta.vitest) {
const { it, expect } = import.meta.vitest;
it('add', () => {
expect(add()).toBe(0);
expect(add(1)).toBe(1);
expect(add(1, 2, 3)).toBe(6);
});
}
Vitest için includeSource
yapılandırmasını, src/
dizini altındaki dosyaları içerecek şekilde güncelleyin:
// vite.config.ts
/// <reference types="vitest" />
import { defineConfig } from 'vite';
export default defineConfig({
test: {
includeSource: ['src/**/*.{js,ts}'],
},
});
Artık test etmeye başlayabilirsiniz!
$ npx vitest
Üretim Derlemesi
Üretim derlemesi için, yapılandırma dosyanızda define
seçeneklerini ayarlamanız gerekecektir. Bu sayede paketleyici, kullanılmayan kodu (dead code) ortadan kaldırabilir. Örneğin, Vite'de:
// vite.config.ts
/// <reference types="vitest" />
import { defineConfig } from 'vite';
export default defineConfig({
test: {
includeSource: ['src/**/*.{js,ts}'],
},
define: {
'import.meta.vitest': 'undefined',
},
});
Diğer Paketleyiciler
unbuild
// build.config.ts
import { defineBuildConfig } from 'unbuild';
export default defineBuildConfig({
replace: {
'import.meta.vitest': 'undefined',
},
// other options
});
Daha fazla bilgi için: unbuild
rollup
// rollup.config.js
import replace from '@rollup/plugin-replace';
export default {
plugins: [
replace({
'import.meta.vitest': 'undefined',
}),
],
// other options
};
Daha fazla bilgi için: Rollup
TypeScript
import.meta.vitest
için TypeScript desteği almak için, tsconfig.json
dosyanıza vitest/importMeta
ekleyin:
// tsconfig.json
{
"compilerOptions": {
"types": [
"vitest/importMeta"
]
}
}
Tam bir örnek için test/import-meta
adresine bakabilirsiniz.
Notlar
Bu özellik şu durumlarda faydalı olabilir:
- Küçük kapsamlı fonksiyonlar veya yardımcı araçlar için birim testleri
- Prototipleme
- Satır İçi Doğrulama
Bileşenler veya E2E testleri gibi daha karmaşık testler için ayrı test dosyaları kullanmanız önerilir.