reactjs - 'JestSerializer' kan ikke tildeles til parameter av typen 'SnapshotSerializerPlugin'


Jeg har en fil i min CRA-applikasjon som heter setupTests.ts, og den viser denne advarselen på createSerializer()-metoden. Hvis jeg omdøper filen til en js-fil, kompileres alt fint og testen kjører. Men hvis jeg legger til "snapshotSerializers": ["enzyme-to-json/serializer"] som jest-konfigurasjon i package.json, fungerer det fint. Men jeg er nysgjerrig på om det finnes en måte å få det til å fungere i den filen.

import React from "react";
import Enzyme from "enzyme";
import Adapter from "enzyme-adapter-react-16";
import { createSerializer } from "enzyme-to-json";

expect.addSnapshotSerializer(createSerializer({mode: "deep",noKey: true}) );
Enzyme.configure({adapter: new Adapter()});

Svar #1

Det korte svaret er at typedefinisjonene mellom enzyme-to-json og "@types/jest" ser ut til å komme i konflikt, så gjør bare følgende

//@ts-ignore
expect.addSnapshotSerializer(createSerializer({ mode: 'deep', noKey: true }));

Jeg antar at dette er din feil (jeg ser ikke at det er spesifisert i spørsmålet):

(egenskap) Options.noKey?: boolean | undefined Argument av typen 'JestSerializer' kan ikke tilordnes til parameter av typen 'SnapshotSerializerPlugin'. Typene av egenskapen 'print' er inkompatible. Typen '(CommonWrapper: CommonWrapper<{}, {}, Component<{}, {}, any>>, serializer: JestSerializer) => Json' kan ikke tilordnes til typen '(val: any, serialize: (val: any) => string, indent: (str: string) => string, opts: SnapshotSerializerOptions, colors: SnapshotSerializerColors) => string'. Typene av parameterne 'serializer' og 'serialize' er inkompatible. Typen '(val: any) => string' mangler følgende egenskaper fra typen 'JestSerializer': test, printts(2345)

Jeg støtte på dette fordi jeg prøvde å bruke enzyme-to-json i et Create-React-App TypeScript-prosjekt hvor jeg ikke har direkte tilgang til jest-konfigurasjonen, og jeg ønsker ikke å ejecte. Advarselen indikerer at typene JestSerializer og SnapshotSerializerPlugin ikke er kompatible.

Det er også et åpent problem på enzyme-to-json-repoet som har vært der i over ett år, så jeg er ikke sikker på om dette kommer til å bli løst

https://github.com/adriantoine/enzyme-to-json/issues/126

I mitt tilfelle var versjonene jeg brukte av hver

"@types/jest": "^24.0.25"
"enzyme-to-json": "^3.4.4",

Relaterte artikler