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-istanbul
Kapsam 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=true
seçeneğini etkinleştirin veya Vitest'i--coverage.enabled=true
işaretiyle çalıştırın. coverage.reporters
listesinehtml
ekleyin: kapsam raporunu bir alt dizine koymak içinsubdir
seçeneğini de etkinleştirebilirsiniz.



