reactjs - 'JestSerializer', 'SnapshotSerializerPlugin' türündeki parametreye atanamaz


CRA uygulamamda setupTests.ts adında bir dosyam var ve createSerializer() metodunda bu uyarıyı gösteriyor. Dosyanın adını js dosyası olarak değiştirirsem her şey sorunsuz derleniyor ve test çalışıyor. Ancak package.json içinde jest konfigürasyonuna "snapshotSerializers": ["enzyme-to-json/serializer"] eklersem sorunsuz çalışıyor. Ama merak ediyorum, bu dosyada çalıştırmanın bir yolu var mı.

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()});

Cevap #1

Kısa cevap, enzyme-to-json ve "@types/jest" arasındaki tür tanımlarının çeliştiği görülüyor, bu yüzden sadece aşağıdakileri yapın

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

Bunu sizin hatanız olarak varsayıyorum (soruda belirtilmiş görmüyorum):

(özellik) Options.noKey?: boolean | undefined 'JestSerializer' tipinde argüman, 'SnapshotSerializerPlugin' tipinde parametreye atanamaz. 'print' özelliğinin türleri uyumsuz. '(CommonWrapper: CommonWrapper<{}, {}, Component<{}, {}, any>>, serializer: JestSerializer) => Json' türü, '(val: any, serialize: (val: any) => string, indent: (str: string) => string, opts: SnapshotSerializerOptions, colors: SnapshotSerializerColors) => string' türüne atanamaz. 'serializer' ve 'serialize' parametrelerinin türleri uyumsuz. '(val: any) => string' türü, 'JestSerializer' türünden şu özellikleri eksik: test, printts(2345)

Buna, doğrudan jest yapılandırmasına erişimim olmayan ve eject yapmak istemediğim bir Create-React-App TypeScript projesinde enzyme-to-json kullanmaya çalışırken rastladım. Uyarı, JestSerializer ve SnapshotSerializerPlugin türlerinin uyumlu olmadığını gösteriyor.

enzyme-to-json deposunda ayrıca bir açık sorun var ve bu sorun bir yıldan fazla süredir orada, bu yüzden bunun çözülüp çözülmeyeceğinden emin değilim

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

Benim durumumda her birinin kullandığım sürümleri şunlardı

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

İlgili makaleler