Skip to content
Vitest 1
Main Navigation KılavuzAPIYapılandırmaİleri
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

Kılavuz

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ü

Tarayıcı Modu

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

Performansı İyileştirme

API

Test API Başvurusu

Sahte Fonksiyonlar

Vi

expect

expectTypeOf

assert

assertType

Yapılandırma

Vitest Yapılandırma Dosyasını Yönetme

Vitest'in Yapılandırılması

Bu sayfada

Eşleştiricileri Genişletme ​

Vitest, hem Chai hem de Jest ile uyumlu olduğundan, tercih ettiğiniz yaklaşıma göre chai.use API'sini veya expect.extend'i kullanabilirsiniz.

Bu kılavuz, eşleştiricileri expect.extend ile genişletmeyi açıklayacaktır. Chai'nin API'siyle ilgileniyorsanız, kılavuzlarına göz atabilirsiniz.

Varsayılan eşleştiricileri genişletmek için, eşleştiricilerinizi içeren bir nesne ile expect.extend'i çağırın.

ts
expect.extend({
  toBeFoo(received, expected) {
    const { isNot } = this;
    return {
      // "pass" değerini isNot'a göre değiştirmeyin. Vitest bunu sizin için halleder.
      pass: received === 'foo',
      message: () => `${received} ${isNot ? 'foo değil' : 'foo'}`,
    };
  },
});

TypeScript kullanıyorsanız, Vitest 0.31.0 ve üzeri sürümlerde, aşağıdaki kodla bir ortam bildirim dosyası içinde (örneğin: vitest.d.ts) varsayılan Assertion arayüzünü genişletebilirsiniz:

ts
import type { Assertion, AsymmetricMatchersContaining } from 'vitest';

interface CustomMatchers<R = unknown> {
  toBeFoo: () => R;
}

declare module 'vitest' {
  interface Assertion<T = any> extends CustomMatchers<T> {}
  interface AsymmetricMatchersContaining extends CustomMatchers {}
}

WARNING

Ortam bildirim dosyasını tsconfig.json dosyanıza eklemeyi unutmayın.

Bir eşleştiricinin dönüş değeri aşağıdaki arayüzle uyumlu olmalıdır:

ts
interface MatcherResult {
  pass: boolean;
  message: () => string;
  // Eğer bunları sağlarsanız, eşleştirici başarısız olduğunda otomatik olarak bir fark (diff) içinde görünürler,
  // bu nedenle farkı kendiniz yazdırmanıza gerek kalmaz.
  actual?: unknown;
  expected?: unknown;
}

WARNING

Asenkron bir eşleştirici oluşturursanız, testin kendisinde sonucu await etmeyi unutmayın (await expect('foo').toBeFoo()).

Bir eşleştirici fonksiyonu içindeki ilk argüman, alınan değerdir (expect(received) içindeki). Geri kalan argümanlar doğrudan eşleştiriciye iletilir.

Eşleştirici fonksiyonu, aşağıdaki özelliklere sahip this bağlamına erişim sağlar:

  • isNot

    Eşleştirici not üzerinde çağrıldıysa true değerini döndürür (expect(received).not.toBeFoo()).

  • promise

    Eşleştirici resolved veya rejected üzerinde çağrıldıysa, bu değer ilgili değiştiricinin adını içerir. Aksi takdirde, boş bir dize olacaktır.

  • equals

    Bu, iki değeri karşılaştırmanıza olanak tanıyan bir yardımcı fonksiyondur. Değerler eşitse true, aksi takdirde false değerini döndürür. Bu fonksiyon, hemen hemen her eşleştirici için dahili olarak kullanılır. Varsayılan olarak asimetrik eşleştiricilere sahip nesneleri destekler.

  • utils

    Bu, mesajları biçimlendirmek için kullanabileceğiniz bir dizi yardımcı fonksiyon içerir.

this nesnesi ayrıca mevcut test hakkında bilgi içerir. expect.getState()'i çağırarak da alabilirsiniz. En kullanışlı özellikler şunlardır:

  • currentTestName

    Mevcut testin tam adı (describe bloğu dahil).

  • testPath

    Mevcut testin dosya yolu.

Pager
Önceki sayfaTest Ortamı
Sonraki sayfaIDE Tümleştirmeleri

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

Copyright (c) 2024 Mithril Contributors

https://v1.vitest.dev/guide/extending-matchers

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

Copyright (c) 2024 Mithril Contributors