typescript - Finnes det en jest-matcher som fungerer som toEqual, men som behandler null og undefined som like verdier?
Jeg har et API som ikke utelater JSON-serialisering for felt med "tomme" (null, none, nil) verdier og returnerer alle som "fieldName": null. Jeg har typede DTO-er i testkode (TypeScript), og jeg vil gjerne gjøre slike felt valgfrie (?) og la dem være undefined på mange steder. Dessverre (for meg) behandler jests toEqual() undefined (verdier i testkoden) og null (verdier fra API) som forskjellige verdier. Min nåværende løsning er å bruke unionstyper som string | null, men det er ganske omstendelig, fordi jeg alltid må initialisere disse feltene. Jeg sjekket jests referanse og fant ingen "ferdig" løsning. Så er det å lage en egen matcher den eneste måten å løse problemet på? Merk: Jeg kan ikke endre serialiseringspolicyen i API-et.
Svar #1
expect(null).toBe(undefined) mislykkes!
I utgangspunktet er det du har at noen ganger etter å ha evaluert et objekt har du null på den ene siden og undefined på den andre
Jeg prøvde å bruke andre jest-metoder som toEqual, men det fungerte rett og slett ikke.
Min løsning
expect(null == undefined).toBe(true)Svar #2
Ved å bruke jest-extended (ekstra Jest-matchere vedlikeholdt av Jest-fellesskapet) kan du bruke toBeNil():
Bruk
.toBeNilnår du sjekker om en verdi ernullellerundefined.test('passes when value is null or undefined', () => { expect(null).toBeNil() expect(undefined).toBeNil() expect(true).not.toBeNil() })
Se: https://github.com/jest-community/jest-extended#tobenil
