Egyezésvizsgálók kiterjesztése
Mivel a Vitest kompatibilis a Chai és a Jest keretrendszerekkel, az expect.extend
metódus mellett a chai.use
API is használható, attól függően, melyik felel meg jobban az igényeidnek.
Ez az útmutató az egyezésvizsgálók expect.extend
használatával történő kiterjesztését mutatja be. Ha a Chai API érdekel, nézd meg az ő útmutatójukat.
Az alapértelmezett egyezésvizsgálók kiterjesztéséhez hívd meg az expect.extend
metódust egy, az egyezésvizsgálókat tartalmazó objektummal.
expect.extend({
toBeFoo(received, expected) {
const { isNot } = this;
return {
// ne módosítsd a "pass" értékét az isNot alapján. ezt a Vitest automatikusan elvégzi
pass: received === 'foo',
message: () => `${received} is${isNot ? ' not' : ''} foo`,
};
},
});
Ha TypeScriptet használsz, a Vitest 0.31.0 verziójától kezdve az alapértelmezett Assertion
interfész kiterjeszthető egy környezeti deklarációs fájlban (pl. vitest.d.ts
) az alábbi kóddal:
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
Ne felejtsd el a tsconfig.json
fájlban megadni a környezeti deklarációs fájlt.
Az egyezésvizsgáló visszatérési értékének a következő interfésszel kell kompatibilisnek lennie:
interface MatcherResult {
pass: boolean;
message: () => string;
// Ha ezeket átadod, automatikusan megjelennek a különbségben, ha
// az egyezésvizsgáló sikertelen, így a diff-et nem kell külön megjelenítened
actual?: unknown;
expected?: unknown;
}
WARNING
Ha aszinkron egyezésvizsgálót hozol létre, ne felejtsd el await
-elni az eredményt (await expect('foo').toBeFoo()
) magában a tesztben.
Az egyezésvizsgáló függvény első argumentuma a fogadott érték (az expect(received)
-ben található). A többi argumentum közvetlenül az egyezésvizsgálónak kerül átadásra.
Az egyezésvizsgáló függvény hozzáfér a this
kontextushoz a következő tulajdonságokkal:
isNot
Igaz értéket ad, ha az egyezésvizsgálót a
not
módosítóval hívták meg (expect(received).not.toBeFoo()
).promise
Ha az egyezésvizsgálót a
resolved
vagyrejected
módosítóval hívták meg, ez az érték tartalmazza a módosító nevét. Ellenkező esetben üres szöveg lesz.equals
Ez egy segédfüggvény, amellyel össze lehet hasonlítani két értéket.
true
értéket ad vissza, ha az értékek egyenlőek, egyébkéntfalse
értéket. Ezt a függvényt használják belsőleg a legtöbb egyezésvizsgálóhoz. Alapértelmezés szerint támogatja az aszimmetrikus egyezésvizsgálókat tartalmazó objektumokat.utils
Segédfüggvények gyűjteményét tartalmazza, amelyek segítségével üzeneteket jeleníthetsz meg.
A this
kontextus az aktuális tesztre vonatkozó információkat is tartalmaz, melyek az expect.getState()
meghívásával is lekérdezhetők. A leghasznosabb tulajdonságok:
currentTestName
Az aktuális teszt teljes neve (beleértve a leíró blokkokat is).
testPath
Az aktuális teszt elérési útja.