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:
isNot
Eşleştirici
not
üzerinde çağrıldıysa (expect(received).not.toBeFoo()
)true
döndürür.promise
Eşleştirici
resolved
veyarejected
ü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 takdirdefalse
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.