Kaynak İçi Test
Vitest, Rust'taki modül testlerine benzer şekilde, testleri doğrudan kaynak kodunuzun içinde, uygulamanızla birlikte çalıştırma imkanı sunar.
Bu yaklaşım, testlerin uygulama ile aynı kapsamı paylaşmasını ve dışa aktarılmamış dahili durumları test edebilmesini sağlar. Aynı zamanda, geliştirme sürecinde daha hızlı geri bildirim döngüsü sunar.
WARNING
Bu kılavuz, testleri kaynak kodunuzun içine nasıl yazacağınızı açıklamaktadır. Testleri ayrı dosyalarda yazmanız gerekiyorsa, lütfen "Test Yazma" kılavuzunu takip edin](./#writing-tests).
Kurulum
Başlamak için, kaynak dosyanızın sonuna bir if (import.meta.vitest)
bloğu ekleyin ve içine testlerinizi yazın. Örneğin:
// uygulama kodu
export function add(...args: number[]) {
return args.reduce((a, b) => a + b, 0);
}
// kaynak içi test bloğu
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'in src/
altındaki dosyaları tanıması için includeSource
yapılandırmasını güncelleyin:
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
includeSource: ['src/**/*.{js,ts}'],
},
});
Artık testlerinizi çalıştırmaya başlayabilirsiniz!
$ npx vitest
Üretim Derlemesi
Üretim derlemesi için, toparlayıcının (bundler) ölü kod elemesini (dead code elimination) gerçekleştirebilmesi amacıyla yapılandırma dosyanızda define
seçeneklerini ayarlamanız gerekecektir. Örneğin, Vite'da:
/// <reference types="vitest/config" />
import { defineConfig } from 'vite'
export default defineConfig({
test: {
includeSource: ['src/**/*.{js,ts}'],
},
define: {
'import.meta.vitest': 'undefined',
},
})
Diğer Paketleyiciler
unbuild
import { defineBuildConfig } from 'unbuild'
export default defineBuildConfig({
replace: {
'import.meta.vitest': 'undefined',
},
// other options
})
Daha fazla bilgi için: unbuild
Rollup
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 amacıyla, tsconfig.json
dosyanıza vitest/importMeta
ekleyin:
{
"compilerOptions": {
"types": [
"vitest/importMeta"
]
}
}
Tam bir örnek için examples/in-source-test
adresine bakabilirsiniz.
Notlar
Bu özellik aşağıdaki durumlar için faydalı olabilir:
- Küçük ölçekli fonksiyonlar veya yardımcı programlar için birim testi
- Prototipleme
- Satır İçi Doğrulama
Bileşenler veya uçtan uca testler gibi daha karmaşık testler için ayrı test dosyaları kullanılması şiddetle tavsiye edilir.