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.
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:
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:
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:
isNotEşleştirici
notüzerinde çağrıldıysa (expect(received).not.toBeFoo())truedöndürür.promiseEşleştirici
resolvedveyarejectedüzerinde çağrıldıysa, bu değer değiştiricinin adını içerecektir. Aksi takdirde, boş bir dize olacaktır.equalsBu, iki değeri karşılaştırmanıza olanak tanıyan bir yardımcı fonksiyondur. Değerler eşitse
true, aksi takdirdefalsedö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.utilsBu, 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:
currentTestNameMevcut testin tam adı (describe bloğu dahil).
testPathMevcut test dosyasının yolu.