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.
WARNING
Bu kılavuz, kaynak kodunuzun içine test yazmayı açıklar. Ayrı test dosyalarına test yazmanız gerekiyorsa, "Test Yazma" kılavuzunu izleyin.
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:
// vitest.config.ts
import { defineConfig } from 'vitest/config';
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:
// vitest.config.ts
import { defineConfig } from 'vitest/config';
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 examples/in-source-test
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.