Kapsam
Vitest, v8 aracılığıyla yerel kod kapsamını ve istanbul aracılığıyla araçlandırılmış kod kapsamını destekler.
Kapsam Sağlayıcıları
TIP
Vitest v0.22.0'dan itibaren
Hem v8 hem de istanbul isteğe bağlıdır. Varsayılan olarak v8 kullanılır.
test.coverage.provider seçeneğini v8 veya istanbul olarak ayarlayarak kapsam aracını seçebilirsiniz:
// vite.config.ts
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
coverage: {
provider: 'istanbul', // veya 'v8'
},
},
});Vitest'i başlattığınızda, ilgili destek paketini otomatik olarak yükleyecektir.
Manuel olarak yüklemek isterseniz:
# v8 için
npm i -D @vitest/coverage-v8
# istanbul için
npm i -D @vitest/coverage-istanbulKapsam Kurulumu
Kapsamı etkinleştirerek test etmek için, CLI'da --coverage işaretini kullanabilirsiniz. Varsayılan olarak, ['text', 'html', 'clover', 'json'] raporlayıcıları kullanılacaktır.
{
"scripts": {
"test": "vitest",
"coverage": "vitest run --coverage"
}
}Yapılandırmak için, yapılandırma dosyanızda test.coverage seçeneklerini ayarlayın:
// vite.config.ts
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
coverage: {
reporter: ['text', 'json', 'html'],
},
},
});Özel Kapsam Sağlayıcı
test.coverage.provider içinde 'custom' değeri geçirilerek özel bir kapsam sağlayıcı kullanmak da mümkündür:
// vite.config.ts
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
coverage: {
provider: 'custom',
customProviderModule: 'my-custom-coverage-provider',
},
},
});Özel sağlayıcılar, CoverageProviderModule'ü yüklemek için bir modül adı veya yolu olan bir customProviderModule seçeneğine ihtiyaç duyar. Bu modül, varsayılan dışa aktarım olarak CoverageProviderModule'ü uygulayan bir nesne dışa aktarmalıdır:
// my-custom-coverage-provider.ts
import type {
CoverageProvider,
CoverageProviderModule,
ResolvedCoverageOptions,
Vitest,
} from 'vitest';
const CustomCoverageProviderModule: CoverageProviderModule = {
getProvider(): CoverageProvider {
return new CustomCoverageProvider();
},
// CoverageProviderModule'ün geri kalanını uygular
};
class CustomCoverageProvider implements CoverageProvider {
name = 'custom-coverage-provider';
options!: ResolvedCoverageOptions;
initialize(ctx: Vitest) {
this.options = ctx.config.coverage;
}
// CoverageProvider'ın geri kalanını uygular
}
export default CustomCoverageProviderModule;Daha fazla bilgi için tür tanımlarına bakın.
Varsayılan Kapsam Klasörü Konumunu Değiştirme
Bir kapsam raporu çalıştırıldığında, projenizin kök dizininde bir coverage klasörü oluşturulur. Bunu başka bir dizine taşımak isterseniz, vite.config.js dosyasındaki test.coverage.reportsDirectory özelliğini kullanın.
import { defineConfig } from 'vite';
export default defineConfig({
test: {
coverage: {
reportsDirectory: './tests/unit/coverage',
},
},
});Kodu Yok Sayma
Her iki kapsam sağlayıcısının da kodu kapsam raporlarından yok sayma yöntemleri vardır:
TypeScript kullanırken, kaynak kodları esbuild kullanılarak dönüştürülür ve bu da tüm yorumları kaynak kodlarından temizler (esbuild#516). Yasal yorumlar olarak kabul edilen yorumlar korunur.
istanbul sağlayıcısı için, yok sayma ipucuna bir @preserve anahtar kelimesi ekleyebilirsiniz. Bu yok sayma ipuçlarının nihai üretim yapısına dahil edilebileceğini unutmayın.
-/* istanbul ignore if */
+/* istanbul ignore if -- @preserve */
if (condition) {v8 için bu herhangi bir soruna neden olmaz. Her zamanki gibi TypeScript ile c8 ignore yorumlarını kullanabilirsiniz:
/* c8 ignore next 3 */
if (condition) {Diğer Seçenekler
Kapsam için yapılandırılabilir tüm seçenekleri görmek için Kapsam Yapılandırma Referansı bölümüne bakın.
Vitest Kullanıcı Arayüzü
Vitest 0.31.0'dan itibaren, kapsam raporunuzu Vitest Arayüzü içinde kontrol edebilirsiniz.
Vitest Kullanıcı Arayüzü, açıkça etkinleştirildiğinde ve html kapsam raporlayıcısı mevcut olduğunda kapsam raporunu etkinleştirecektir; aksi takdirde kullanılamayacaktır:
- Yapılandırmanızda
coverage.enabled=trueseçeneğini etkinleştirin veya Vitest'i--coverage.enabled=trueişaretiyle çalıştırın. coverage.reporterslistesinehtmlekleyin: kapsam raporunu bir alt dizine koymak içinsubdirseçeneğini de etkinleştirebilirsiniz.



