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

Eşleştiricileri Genişletme ​

Vitest hem Chai hem de Jest ile uyumlu olduğundan, chai.use API'sini veya expect.extend'i tercih ettiğiniz şekilde kullanabilirsiniz.

Bu kılavuz, eşleştiricileri expect.extend ile nasıl genişleteceğinizi açıklayacaktır. Chai API'siyle ilgileniyorsanız, kılavuzlarına göz atın.

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ğerinizi isNot'a göre değiştirmeyin. Vitest bunu sizin için yapar.
      pass: received === 'foo',
      message: () => `${received} is${isNot ? ' not' : ''} foo`,
    };
  },
});

TypeScript kullanıyorsanız, varsayılan Assertion arayüzünü bir ortam bildirim dosyasında (örn: vitest.d.ts) aşağıdaki kodla genişletebilirsiniz:

ts
import '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 ExpectationResult {
  pass: boolean;
  message: () => string;
  // Bunları sağlarsanız, eşleştirici başarısız olduğunda otomatik olarak bir fark içinde görüneceklerdir,
  // bu nedenle farkı kendiniz yazdırmanıza gerek yoktur
  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ştiricinin fonksiyonundaki ilk argüman alınan değerdir (expect(received) içindeki). Diğerleri doğrudan eşleştiriciye geçirilen argümanlardır.

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

  • isNot

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

  • promise

    Eşleştirici resolved veya rejected üzerinde çağrıldıysa, bu değer değiştiricinin adını içerecektir. 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 döndürür. Bu fonksiyon neredeyse her eşleştirici için dahili olarak kullanılır. Varsayılan olarak asimetrik eşleştiricilere sahip nesneleri destekler.

  • utils

    Bu, mesajları görüntülemek için kullanabileceğiniz bir dizi yardımcı fonksiyon içerir.

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

  • currentTestName

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

  • testPath

    Mevcut test dosyasının yolu.

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

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

Copyright (c) 2024 Mithril Contributors

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

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

Copyright (c) 2024 Mithril Contributors