Skip to content
Vitest 2
Main Navigation KılavuzAPIYapılandırmaTarayıcı Moduİleri
2.1.9
1.6.1
0.34.6

Türkçe

English
简体中文
繁體中文
Español
Français
Русский
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
čeština
magyar

Türkçe

English
简体中文
繁體中文
Español
Français
Русский
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
čeština
magyar

Görünüm

Sidebar Navigation

Neden Vitest

Başlangıç

Özellikler

Çalışma Alanı

Komut Satırı Arayüzü

Test Filtreleme

Raporlayıcılar

Kapsam

Anlık Görüntü (Snapshot) Testleri

Sahtecilik (Mocking)

Türleri Test Etme

Vitest Arayüzü

Kaynak İçi Test

Test Bağlamı

Test Ortamı

Eşleştiricileri Genişletme

IDE Tümleştirmeleri

Hata Ayıklama

Diğer Test Çalıştırıcılarıyla Karşılaştırmalar

Geçiş Rehberi

Yaygın Hatalar

Profiling Test Performance

Performansı İyileştirme

Bu sayfada

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ı ​

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:

ts
// vitest.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:

bash
# v8 için
npm i -D @vitest/coverage-v8

# istanbul için
npm i -D @vitest/coverage-istanbul

Kapsam Kurulumu ​

TIP

Yapılandırma dosyanızda her zaman coverage.include tanımlamanız önerilir. Bu, Vitest'in coverage.all tarafından seçilen dosya sayısını azaltmasına yardımcı olur.

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.

json
{
  "scripts": {
    "test": "vitest",
    "coverage": "vitest run --coverage"
  }
}

Yapılandırmak için, yapılandırma dosyanızda test.coverage seçeneklerini ayarlayın:

ts
// vitest.config.ts
import { defineConfig } from 'vitest/config';

export default defineConfig({
  test: {
    coverage: {
      reporter: ['text', 'json', 'html'],
    },
  },
});

Özel Kapsam Muhabiri ​

test.coverage.reporter içinde paket adını veya mutlak yolu ileterek özel kapsam muhabirleri kullanabilirsiniz:

ts
import { defineConfig } from 'vitest/config';

export default defineConfig({
  test: {
    coverage: {
      reporter: [
        // NPM paket adını kullanarak muhabir belirtin
        ['@vitest/custom-coverage-reporter', { someOption: true }],

        // Yerel yolu kullanarak muhabir belirtin
        '/absolute/path/to/custom-reporter.cjs',
      ],
    },
  },
});

Özel muhabirler Istanbul tarafından yüklenir ve kendi muhabir arayüzüyle eşleşmelidir. Referans için yerleşik muhabirlerin uygulamasına bakın.

js
// custom-reporter.cjs
const { ReportBase } = require('istanbul-lib-report');

module.exports = class CustomReporter extends ReportBase {
  constructor(opts) {
    super();

    // Yapılandırmadan iletilen seçenekler burada kullanılabilir
    this.file = opts.file;
  }

  onStart(root, context) {
    this.contentWriter = context.writer.writeFile(this.file);
    this.contentWriter.println('Start of custom coverage report');
  }

  onEnd() {
    this.contentWriter.println('End of custom coverage report');
    this.contentWriter.close();
  }
};

Ö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:

ts
// vitest.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:

ts
// 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.

js
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:

  • v8
  • ìstanbul

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.

diff
-/* istanbul ignore if */
+/* istanbul ignore if -- @preserve */
if (condition) {

v8 için bu herhangi bir soruna neden olmaz. Her zamanki gibi TypeScript ile v8 ignore yorumlarını kullanabilirsiniz:

ts
/* v8 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ü ​

Kapsam raporunuzu Vitest UI uygulamasında 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.reporter listesine html ekleyin: kapsam raporunu bir alt dizine koymak için subdir seçeneğini de etkinleştirebilirsiniz.
Vitest Arayüzü'nde html kapsam etkinleştirmeVitest Arayüzü'nde html kapsam etkinleştirmeVitest Arayüzü'nde html kapsamVitest Arayüzü'nde html kapsam
Pager
Önceki sayfaRaporlayıcılar
Sonraki sayfaAnlık Görüntü (Snapshot) Testleri

MIT Lisansı altında yayınlanmıştır.

Copyright (c) 2024 Mithril Contributors

https://v2.vitest.dev/guide/coverage

MIT Lisansı altında yayınlanmıştır.

Copyright (c) 2024 Mithril Contributors