Fassenberg
Ich habe ein mapModule
wo ich Komponenten importiere und sie exportiere:
import ComponentName from '../components/ComponentName';
export default {
name: ComponentName,
};
Wie kann ich das testen mapModule
die korrekten exportierten Schlüssel und Werte hat und dass sie nicht null oder undefiniert sind?
In Version 23.3.0 von Jest,
expect(string).toMatch(string)
erwartet eine Zeichenfolge.
Verwenden:
const expected = { name:'component name' }
const actual = { name: 'component name', type: 'form' }
expect(actual).toMatchObject(expected)
Ergebnis ist das Bestehen der Prüfung
toufek khoury
Sie können eines davon verwenden:
toEqual und toMatchObject sind Template-Matcher für Objekte:
let Obj = {name: 'component name', id: 2};
expect(oneObj).toEqual({name: 'component name'}) // false, should be exactly equal all Obj keys and values
expect(oneObj).toMatchObject({name: 'component name'}) // true
oder verwenden Sie einfach toHaveProperty :
let Obj = {name: 'component name'};
expect(oneObj).toHaveProperty('name') // true
expect(oneObj).toHaveProperty('name', 'component name') // true
rtorres
Denk daran, dass .toMatchObject
Schecks
“dass ein JavaScript-Objekt mit einer Teilmenge der Eigenschaften eines Objekts übereinstimmt.”
So toMatchObject
kann unbeabsichtigte Behauptungen enthalten wie zum Beispiel:
expect({ a: 1, b: 2 }).toMatchObject({ a: 1 }); // pass
Wenn Sie ein Objekt genau abgleichen möchten, sollten Sie verwenden .toStrictEqual
verfügbar seit jest 23
:
expect({ a: 1, b: 2 }).toStrictEqual({ a: 1 }); // fail
Ich habe diesen Tipp nur hinzugefügt und dachte, dass er meinen eigenen Tests eine noch bessere Granularität verleiht, insbesondere wenn ich Argumente mit verspotteten Diensten abgleiche:
expect.objectContaining({
url: expect.stringContaining('https://'),
})
Alternativ können Sie Regex mit verwenden expect.stringMatching
die die angegebene Regex gegen den Wert testet. Ziemlich ordentlich.
erwartet.stringEnthält
erwartet.stringMatching
Für einen einzelnen Schlüssel können Sie auschecken
expect(Boolean(obj[prop])).toBe(true | false);
Für mehrere Schlüssel (wobei alle vorhanden sein müssen) können Sie verwenden,
expect(Boolean(obj[prop1]) && Boolean(obj[prop2])).toBe(true | false);
Für mehrere Schlüssel (wobei einer vorhanden sein muss) können Sie verwenden
expect(Boolean(obj[prop1]) || Boolean(obj[prop2])).toBe(true | false);
beinger
Ein anderer Weg ist:
expect(JSON.stringify(object)).toBe(JSON.stringify(object))
Dadurch wird sichergestellt, dass die Objekte gleich sind.
Verwenden Sie jedoch Folgendes:
expect(object).toMatchObject(object)
ist in den meisten Fällen die beste Option.
143158 0 0 cookie-check Wie kann ich mit Jest auf Gleichheit von Objektschlüsseln und Werten testen? yes